백 속성없이 PEM 형식의 PFX에서 CA 인증서 체인을 내보내는 방법


31

전체 인증서 체인과 개인 키가 포함 된 PKCS12 파일이 있습니다. 응용 프로그램을 위해 3 개의 파일로 나눌 필요가 있습니다. 필요한 3 개의 파일은 다음과 같습니다 (PEM 형식).

  • 암호화되지 않은 키 파일
  • 클라이언트 인증서 파일
  • CA 인증서 파일 (루트 및 모든 중간)

이것은 수행해야 할 일반적인 작업이므로 수동으로 출력을 편집하지 않고도이 작업을 수행 할 수있는 방법을 찾고 있습니다.

나는 다음을 시도했다.

openssl pkcs12 -in <filename.pfx> -nocerts -nodes -out <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys -out <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain -out <cacerts.cer>

이것은 잘 작동하지만 출력에는 bag 속성이 포함되어 있으며 응용 프로그램은 처리 방법을 모릅니다.

일부 검색 후 bag 속성을 제거하기 위해 x509를 통해 결과를 전달하는 제안 된 솔루션을 찾았습니다.

openssl x509 -in <clientcert.cer> -out <clientcert.cer>

이것은 작동하지만 cacert 파일에 문제가 있습니다. 출력 파일에는 체인에있는 3 개의 인증서 중 하나만 포함됩니다.

pkcs12 명령의 출력에 bag 속성을 포함하지 않거나 x509 명령 출력에 모든 인증서를 포함시키는 방법이 있습니까? 또한 x509를 통해 실행하는 것이 가장 간단한 해결책이라면 파일을 두 번 쓰는 대신 pkcs12의 출력을 x509로 파이프하는 방법이 있습니까?

답변:


36

내가 마침내 온 해결책은 sed를 통해 파이프하는 것입니다.

openssl pkcs12 -in <filename.pfx> -nocerts -nodes | sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <cacerts.cer>

감사! 이것은 오늘 시간을 절약했습니다! ;-)
Jim P.

정말 고맙습니다!
PaulJ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.