OpenSSLを使用してPEMファイルとRSA秘密鍵をPFXファイルに変換しようとしています。これが私が使用しようとしたコマンドの例です:
openssl pkcs12 -export -out cert.pfx -inkey key.pem -in cert.pem
その際、次のエラーメッセージが表示されます。
unable to load private key
9068:error:0906D06C:PEM routines:PEM_read_bio:no start
line:pem_lib.c:696:Expecting: ANY PRIVATE KEY
証明書ファイルは次のようになります。
-----BEGIN CERTIFICATE-----
....
-----END CERTIFICATE-----
秘密鍵は次のようになります。
-----BEGIN RSA PRIVATE KEY-----
....
-----END RSA PRIVATE KEY-----
エラーを掘り下げましたが、解決策はまだ見つかりません。
[〜#〜]編集[〜#〜]
追加の調査の結果、opensslのバージョンが異なると問題になるようです。
0.9.8zhを実行しているOSXシステムで2016年1月14日実行すると、これらのステートメントは正常に機能します。
ただし、バージョンOpenSSL 1.0.1p 2015年7月9日およびOpenSSL 1.1.0g 2017年11月2日のWindowsマシンで実行すると、上記のエラーが発生します。
徹底的に調査した結果、鍵と証明書ファイルを生成するのはPowershellスクリプトであることがわかりました。
WindowsでNotepad ++を使用し、OSXでTex-Edit Plusを使用して隠し文字を特定すると、ファイルの最後に余分な[cr]があることがわかりました。
コマンドを使用する
openssl rsa -in <private key file> -noout -text
openssl x509 -in <cert file> -noout -text
ファイルの有効性を適切にチェックしています
私のソースはbase64でエンコードされた文字列だったので、Windowsでcertutilコマンドを使用してしまいました(つまり)。
certutil -f -decode cert.enc cert.pem
certutil -f -decode key.enc cert.key
windowsでファイルを生成します。ファイルが正しい場合、上記のOpenSSLコマンドは期待どおりに機能しました。
証明書cert.pemにもキーが含まれています。キーのない証明書があることを確認してください。証明書の作成中に-nokeysを使用します。
私も同じで立ち往生しました。そして@thxmikeが言ったように。私の場合も同様でした。
OpenSSLコマンドは、これに対して期待どおりに機能しませんでした。openssl pkcs12 -export -in c.cer -inkey c.key -out d.pfx
そのため、WindowsでCertutilを使用することになりました。 Azureに追加したかったので。
注意:-
1。必ず.crtを.cerに変更してください。
2。 .cerファイルと.keyファイルを同じフォルダに同じ名前で配置してください-(c.cerとc.key)
次に実行します:certutil -MergePFX c.cer c.pfx
結合されたpfxファイルを取得する必要があります。
乾杯!