私は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の証明書を抽出するにはどうすればよいですか?
私は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
その後、あなたは持っています:
証明書とキーを同じファイルに入れるには、以下を使用します
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 -in path.p12 -out newfile.pem
パスワードを入力するだけです。次の構文を使用して、同じコマンドライン内で実行できます。
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
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())
file
してファイルを開く理由はありますopen
か?私はそれを将来使用するのでそれを理解したいだけです(
open("push.p12", 'rb').read()
。
with open("push.pem", "wb") as fobj: fobj.write(crypto.dump_certificate(crypto.FILETYPE_PEM, p12.get_certificate()))
に書き込むwith open("push.key", "wb") as fobj: fobj.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, p12.get_privatekey()))
必要があります。つまり、証明書とキーを書き込みます。
パスワードなしのPEMファイルが必要な場合は、このソリューションを使用できます。
秘密鍵と証明書をコピーして同じファイルに貼り付け、.pemとして保存するだけです。
ファイルは次のようになります。
-----BEGIN PRIVATE KEY-----
............................
............................
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...........................
...........................
-----END CERTIFICATE-----
これが、HTTPSのシスコデバイスに証明書をアップロードする唯一の方法です。