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]
その後、出力ファイル内の秘密鍵を暗号化するためのパスワードの入力を求められます。秘密鍵を暗号化せずに(プレーンテキストで)エクスポートする場合は、上の行に "nodes"オプションを含めます。
openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password] -nodes
もしあなたがPythonを使うことができれば、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ファイルを受け入れました。