PFX인증서에서 인증서 및 개인키 추출
PKCS#12
PKCS#12(Public Key Cryptography Standards #12)형식은 각종 키, 인증서가 모두 포함될 수 있는 형태이다. 해당 형식을 사용하면, 바이너리 형태로 저장되며, 이 파일을 PFX 파일이라고도 한다.
- openssl 툴이 설치되어 있어야 함
- pfx파일에 CA인증서는 포함되어 있지 않을 수 있음
- 인증서 파일이 암호화 되어 있을 경우, 암호키를 입력해 주어야 함
- 사용 예시에서 확장자를 포함한 파일이름은 본인 설정에 맞게 자유롭게
추출
- 인증서 추출
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys -out <clientcert.crt> --password pass:<password>
- 개인키 추출
openssl pkcs12 -in <filename.pfx> -nocerts -nodes -out <clientcert.key> --password pass:<password>
- CA인증서 추출
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain -out <cacerts.crt> --password pass:<password>
- 사용 예시
openssl pkcs12 -in my.pfx -nocerts -nodes -out my.key --password pass:a1234 openssl pkcs12 -in my.pfx -clcerts -nokeys -out my.crt --password pass:a1234 openssl pkcs12 -in my.pfx -cacerts -nokeys -chain -out ca_my.pem --password pass:a1234
주의사항
추출된 파일을 바로 시스템에 적용하여 사용하면 형식이 맞지 않아서 에러가 날 수 있으니, 적절하게 필요한 부분만 떼서 사용해야 한다.
- 추출 직후의 파일 포맷
아래 예시에 사용된 예시는 임의 변경한 사용 불가능한 인증서이니, 괜히 헛수고 하지 않길 바란다.
Bag Attributes Microsoft Local Key set: <No Values> localKeyID: 01 00 00 00 friendlyName: le-e9a1231-7f1c-1234-b123-f1233da2 Microsoft CSP Name: Microsoft RSA SChannel Cryptographic Provider Key Attributes X509v3 Key Usage: 10 -----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDKntycKiujZNnY 5BgQ/ZEdec4uxFQ0lLK7CxHo1gHJLvqm660cuFZVJBtP6BPSHtAczqYGAiWQOESt hnIjURqPxSFrMgUahK06+f2bCjIE844FP49NxMHh88VJMnwLz9RhvI5sOsXuG68q Gj9DnB+3wuxNuIo44UhVthcGO4QmgBWAEuHCiq4b2Q14rLkcQM11r3xkQFzq08Z+ qPvYDs01BM537uU/RCoDhZMt5V6FHiBsZMy6bT+jDzhSKRVxSdoibwPo9WOAVvzx KdmmxI58TuY8Tf6AUH7FCzd2GTl6T2rqTa9ZE9RGGUq3PTpX3xJ6HZgpXHCODJHp 81jn0aDdAgMBAAECggEACHHpmPqq+fLsn30WQbMH1tYqUUmuhsiB0IjsFKvCxEtY eBePjghi1Mad+s0d8l6FZwX35n01apblyeO2IyGwvThGpcyeaNYJ0FD2EH2yywEJ tM9K3j9qo0vBN8VKZUWiwPYWa41hjYSK3vLcGynJKqQNrEmaPTeqh6QAvqpBXkda YMV0XsccZg0iVbiq7jP9lDhZMt5V6FHZjfnDza/eQlqIXFiYFVnJSOeCOe930A4I xC0UPVKVwPL2Ux1ngDtiKYHA++DKKy9VgEVCjeCOA8197ce4rgkLyidECstyG0qC ahhdNjBlvk8DiZuH5srUxECzEUi4w5dlWBhqyfcTIwKBgQDe98MXq1e/mM3sdpTz XnRSjTPANuCaC9xGtkh6S+vQqB39duruk/n1lYom+dNIqmagP7MOgHoD7nbtfLHJ 3BqNCnT+qGzxwSxMcFwab7Yexgedj1efEaWsQrmMh6IdDCLPEfimaplk2PGSZwwd quncv0DB6Yg3nQK2mjKaVY2dpwKBgQDoo2mwq5vKFf7csuXl/mFUgm1zPd2maXaA 4Hr0yEoqx/cylE2KnQ5x3TvSboFC3iLbCPAhYRidyhLZ0cK//4gKqsACvTI3t3OG hhMSAUwFff+Eub3E0JXAWvNpmh39wuM0peJKiBPREJTHfBgKaqDO6OIOJ9snPufv gmKEtZyF2wKBgCvAemvel21lUqMf8cJ/uluokYsaOaCAy0yk4Dv/QdrD4n6mIxuF tfrWyTE0vJz5swGm/j/OPiMfW/7mBQ0TP7KFZsfBzP7zZPnq4mfdm+MWANCOHCd+ kv/mZ/qHcuw4QWxYnm4pZMhBqmagP+f3zcQfU1m5tZ0UFkA2qc9XEl7pAoGAIlyA r+epCyBUlKSX8HCyT5k0MWFh68KIDmEZyC4NRmRizsW47lBkYc0bmOlZjlbhLxkS 3ttIl4XRYvromRNVNL4jvkPTtwcRuTz0dCRc5jLGGwSUUw28EL1eVqq840514MDf u8J9qtOYJh7eLiuxtN4RBaY9aH6SI35OrutkQyECgYEAkCLH4lsbwWCnI4sip+Rj AeACACMEUHvl4XRYvromRNVNL4jvkPTtwcRuTz0d1k2GwSUUw28EL1/+a2J1S7gr 8jKRIG3X0QuGq/f1lwrZZPSVEYTsTN3fe9/YhDMeC+/VRhIar58QB6JTYlxWyP7o AiNfeiGazzMTMmO79XaTuHI= -----END PRIVATE KEY-----
- 필요한 부분
-----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDKntycKiujZNnY 5BgQ/ZEdec4uxFQ0lLK7CxHo1gHJLvqm660cuFZVJBtP6BPSHtAczqYGAiWQOESt hnIjURqPxSFrMgUahK06+f2bCjIE844FP49NxMHh88VJMnwLz9RhvI5sOsXuG68q Gj9DnB+3wuxNuIo44UhVthcGO4QmgBWAEuHCiq4b2Q14rLkcQM11r3xkQFzq08Z+ qPvYDs01BM537uU/RCoDhZMt5V6FHiBsZMy6bT+jDzhSKRVxSdoibwPo9WOAVvzx KdmmxI58TuY8Tf6AUH7FCzd2GTl6T2rqTa9ZE9RGGUq3PTpX3xJ6HZgpXHCODJHp 81jn0aDdAgMBAAECggEACHHpmPqq+fLsn30WQbMH1tYqUUmuhsiB0IjsFKvCxEtY eBePjghi1Mad+s0d8l6FZwX35n01apblyeO2IyGwvThGpcyeaNYJ0FD2EH2yywEJ tM9K3j9qo0vBN8VKZUWiwPYWa41hjYSK3vLcGynJKqQNrEmaPTeqh6QAvqpBXkda YMV0XsccZg0iVbiq7jP9lDhZMt5V6FHZjfnDza/eQlqIXFiYFVnJSOeCOe930A4I xC0UPVKVwPL2Ux1ngDtiKYHA++DKKy9VgEVCjeCOA8197ce4rgkLyidECstyG0qC ahhdNjBlvk8DiZuH5srUxECzEUi4w5dlWBhqyfcTIwKBgQDe98MXq1e/mM3sdpTz XnRSjTPANuCaC9xGtkh6S+vQqB39duruk/n1lYom+dNIqmagP7MOgHoD7nbtfLHJ 3BqNCnT+qGzxwSxMcFwab7Yexgedj1efEaWsQrmMh6IdDCLPEfimaplk2PGSZwwd quncv0DB6Yg3nQK2mjKaVY2dpwKBgQDoo2mwq5vKFf7csuXl/mFUgm1zPd2maXaA 4Hr0yEoqx/cylE2KnQ5x3TvSboFC3iLbCPAhYRidyhLZ0cK//4gKqsACvTI3t3OG hhMSAUwFff+Eub3E0JXAWvNpmh39wuM0peJKiBPREJTHfBgKaqDO6OIOJ9snPufv gmKEtZyF2wKBgCvAemvel21lUqMf8cJ/uluokYsaOaCAy0yk4Dv/QdrD4n6mIxuF tfrWyTE0vJz5swGm/j/OPiMfW/7mBQ0TP7KFZsfBzP7zZPnq4mfdm+MWANCOHCd+ kv/mZ/qHcuw4QWxYnm4pZMhBqmagP+f3zcQfU1m5tZ0UFkA2qc9XEl7pAoGAIlyA r+epCyBUlKSX8HCyT5k0MWFh68KIDmEZyC4NRmRizsW47lBkYc0bmOlZjlbhLxkS 3ttIl4XRYvromRNVNL4jvkPTtwcRuTz0dCRc5jLGGwSUUw28EL1eVqq840514MDf u8J9qtOYJh7eLiuxtN4RBaY9aH6SI35OrutkQyECgYEAkCLH4lsbwWCnI4sip+Rj AeACACMEUHvl4XRYvromRNVNL4jvkPTtwcRuTz0d1k2GwSUUw28EL1/+a2J1S7gr 8jKRIG3X0QuGq/f1lwrZZPSVEYTsTN3fe9/YhDMeC+/VRhIar58QB6JTYlxWyP7o AiNfeiGazzMTMmO79XaTuHI= -----END PRIVATE KEY-----
끝.
반응형
댓글을 사용할 수 없습니다.