.spc
ファイルにGoDaddyが発行したコード署名証明書があります。また、.key
ファイルに秘密鍵があります。コード署名は約13か月前に発行されましたが、その後有効期限が切れ、GoDaddyで更新されました。更新プロセス中、秘密鍵は要求されず、新しい.spc
ファイルのみが発行されました。
現在、元の秘密鍵ファイルを問題証明書と結合して、Windows証明書ストアへのインストールに適した.pfx
(または.cer
?)ファイルを形成するという問題に直面しています。
私が試しているコマンドは次のとおりです。
openssl.exe pkcs12 -inkey my.key -in my.spc -out my.pfx -export
ただし、「秘密鍵に一致する証明書がありません」というエラーメッセージが表示されます。
SOに関するこの回答 に従って、.key
ファイルが有効な秘密鍵であることを確認しました。ただし、.spc
が有効な証明書であることを確認しようとすると、次のようになります。
unable to load certificate
5436:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib.c:650:Expecting: TRUSTED CERTIFICATE
入力から.pfx
ファイルを生成する正しい方法は何ですか? OpenSSL0.9.8kを使用しています。
結局、私はうまくいく手順を理解することができました。 SPCファイルとKEYファイルから新しいPFXおよびCERコード署名証明書を生成する手順は次のとおりです。
CodeSign.spc
証明書を取得します。期限切れのPFXからPEM形式の秘密鍵をエクスポートします。
openssl.exe pkcs12 -in CodeSign.pfx -nocerts -out CodeSign.pem
PEM形式の秘密鍵をPVK形式に変換します。
pvk.exe -in CodeSign.pem -topvk -strong -out CodeSign.pvk
PVKとSPCをPFXに結合します。
pvk2pfx.exe -pvk CodeSign.pvk -pi <passphrase> -spc CodeSign.spc -pfx CodeSign.pfx -po <passphrase> -f
結果のPFXファイルをWindows証明書ストアにインポートします。エクスポート可能にすることを忘れないでください。
CodeSign.cer
としてエクスポートします。証明書を定期的に更新する場合は、PVKファイルを保存して、手順(2)と(3)をスキップできます。
UPDATE:証明書がSPC形式ではなくCRTである場合は、次の手順を実行してSPCに変換します。
openssl crl2pkcs7 -nocrl -certfile CodeSign.crt -outform DER -out CodeSign.spc
出典:
必要なツール:
pvk.exe
—そのページの下部にあるダウンロードリンクを参照してください(元の場所にアクセスできない場合があります。そのような場合は、 この記事 を参照してください。ミラーサイト)pvk2pfx.exe
— Microsoft SDKの一部であり、Visual Studio2010とともにインストールされます私も同様の問題を抱えており、解決策を探すために少なくとも数時間を費やしました。 GoDaddyから.spcファイルと.pemファイルが提供されましたが、OpenSSLを使用している場合は.pfxファイルを作成できませんでした。最後に、MMCを使用してローカルコンピューター内に.spcファイルをインポートしました。証明書がローカルマシンにインポートされると、コード署名証明書ファイル自体と一緒にGoDaddyのチェーンファイルが取り込まれることに気付きました。 MMCビュー
次に、両方のファイルを選択し、右クリックして.pfxファイルとしてエクスポートします。ファイルを保護するためのパスワードを入力すれば完了です。これは、これまでで最も単純で簡単なソリューションです。この投稿が多くの人々に役立つことを願っています。
現在の回答の投稿は、期限切れの証明書ファイル(.pfxまたは.p12)からGoDaddyを使用して新しいファイルに移動する最終ステップで非常に役立ちましたが、証明書を生成する方法の最初のステップに関する情報が不足していることがわかりました元の証明書ファイルからの署名要求(CSR)。
同様の情報を探している他の人のために、これが私が最終的に使用したものです...
秘密鍵を取得します。
openssl pkcs12 -in certs-and-key.p12 -out privateKey.key
証明書を取得します。
注意:これにより、CA証明書が提供される可能性があります
openssl pkcs12 -in certs-and-key.p12 -out certificate.crt -nokeys
より良い:このコマンドを使用して、クライアント証明書のみを出力します
openssl pkcs12 -in MacCossLabUW.p12 -clcerts
次に、出力を次の間にコピーします。
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
それをcertificate.crtという名前のファイルに保存します
次に、秘密鍵と証明書がコマンドと一致することを確認します。
openssl rsa -noout -modulus -in privateKey.key | openssl md5
openssl x509 -noout -modulus -in certificate.crt | openssl md5
次に、新しいCSRを生成します。
openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key
CSRを使用して証明書を再入力します。
GoDaddyソフトウェア発行証明書(.spc)ファイルをダウンロードします。
生成された証明書が要求の秘密鍵と一致することを確認します。
openssl pkcs7 -inform DER -in certificate.spc -print_certs
次に、証明書の間に出力をコピーします(注:出力にはCA証明書も含まれます)。
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
Certificate-new.crtという名前のファイルに保存します
そして、次のコマンドを実行します。
openssl x509 -noout -modulus -in certificate-new.crt | openssl md5
出力は、秘密鍵と要求証明書で使用された前の呼び出しと一致する必要があります。
プロセスを完了するには、pvk2pfxを使用して回答に概説されている手順に従います。
また、この投稿の概略図は非常に役立ちました。
OpensslでのみPFXを作成できます。
期限切れのPFXからPEM形式の秘密鍵をエクスポートします。
openssl pkcs12 -in CodeSign.pfx -nocerts -out CodeSign.pem
PFXを作成する
openssl pkcs7 -in CodeSign.spc -inform der -print_certs | openssl pkcs12 -export -inkey CodeSign.pem -out CodeSign.pfx