Programing

OpenSSL을 사용하여 PKCS # 12 인증서를 PEM으로 변환

lottogame 2020. 5. 17. 10:30
반응형

OpenSSL을 사용하여 PKCS # 12 인증서를 PEM으로 변환


Windows 7의 OpenSSL x64 를 Google Code의 openssl-for-windows에서 다운로드했습니다 . 나는 실행하려고합니다 :

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" 

하지만 오류가 발생합니다.

unable to load private key

OpenSSL을 사용하여 PKCS # 12 저장소에서 PEM의 인증서를 어떻게 추출합니까?


시험:

openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys
openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes

그 후 당신은 :

  • newfile.crt.pem의 인증서
  • newfile.key.pem의 개인 키

인증서와 키를 같은 파일에 넣으려면 다음을 사용하십시오.

openssl pkcs12 -in path.p12 -out newfile.pem

명령 행에서 직접 PKCS # 12 비밀번호를 입력해야하는 경우 (예 : 스크립트) -passin pass:${PASSWORD}다음을 추가하십시오 .

openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys -passin 'pass:P@s5w0rD'

비밀번호 만 입력하면됩니다. 다음 구문을 사용하여 동일한 명령 줄에서 수행 할 수 있습니다.

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password]

그러면 출력 파일에서 개인 키를 암호화하기위한 비밀번호를 묻는 메시지가 표시됩니다. 개인 키를 암호화되지 않은 (일반 텍스트) 내보내려면 위의 줄에 "노드"옵션을 포함하십시오.

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password] -nodes

추가 정보 : http://www.openssl.org/docs/apps/pkcs12.html


파이썬을 사용할 수 있다면 pyopenssl모듈 이 있으면 더 쉽습니다 . 여기있어:

from OpenSSL import crypto

# May require "" for empty password depending on version

with open("push.p12", "rb") as file:
    p12 = crypto.load_pkcs12(file.read(), "my_passphrase")

# PEM formatted private key
print crypto.dump_privatekey(crypto.FILETYPE_PEM, p12.get_privatekey())

# PEM formatted certificate
print crypto.dump_certificate(crypto.FILETYPE_PEM, p12.get_certificate())

PFX 파일이 있고 NGINX 용 KEY 파일을 만들어야했기 때문에 다음과 같이했습니다.

openssl pkcs12 -in file.pfx -out file.key -nocerts -nodes

그런 다음 KEY 파일을 편집하고까지 모든 내용을 제거해야했습니다 -----BEGIN PRIVATE KEY-----. 그 후 NGINX는 KEY 파일을 수락했습니다.

참고 URL : https://stackoverflow.com/questions/15144046/converting-pkcs12-certificate-into-pem-using-openssl

반응형