6 に答える
結局、私はうまくいく手順を理解することができました。SPCファイルとKEYファイルから新しいPFXおよびCERコード署名証明書を生成する手順は次のとおりです。
CodeSign.spc
GoDaddyから新しい証明書を取得します。期限切れの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証明書ストアにインポートします。エクスポート可能にすることを忘れないでください。
- 証明書ストアからバイナリCER形式にとしてエクスポートします
CodeSign.cer
。 - オプションで、Windows証明書ストアから証明書を削除します。
証明書を定期的に更新する場合は、PVKファイルを保存して、手順(2)と(3)をスキップできます。
更新: SPC形式ではなくCRTの証明書を使用している場合は、次の手順を実行してSPCに変換します。
openssl crl2pkcs7 -nocrl -certfile CodeSign.crt -outform DER -out CodeSign.spc
出典:
- http://www.tech-pro.net/export-to-pvk-spc.html
- http://ellisweb.net/2008/08/signing-code-using-pvk-and-spc-files/
- http://www.drh-consultancy.demon.co.uk/
- https://www.sslshopper.com/ssl-converter.html
- http://russenreaktor.wordpress.com/2010/06/10/solved-convert-signing-certificate-crt-to-spc/
必要なツール:
- OpenSSL
pvk.exe
—そのページの下部にあるダウンロードリンクを参照してください(元の場所にアクセスできない場合があります。そのような場合は、ミラーサイトへのリンクまたは別の直接ダウンロードリンクを含むこの記事を参照してください)pvk2pfx.exe
— Microsoft SDKの一部であり、VisualStudio2010とともにインストールされます
私も同様の問題を抱えており、解決策を探すために少なくとも数時間を費やしました。GoDaddyから.spcファイルと.pemファイルが提供されましたが、OpenSSLを使用している場合は.pfxファイルを作成できませんでした。最後に、MMCを使用してローカルコンピューター内に.spcファイルをインポートしました。証明書がローカルマシンにインポートされると、コード署名証明書ファイル自体と一緒にGoDaddyのチェーンファイルが取り込まれることに気付きました。MMCビュー
次に、両方のファイルを選択し、右クリックして.pfxファイルとしてエクスポートします。ファイルを保護するためのパスワードを入力すれば完了です。これは、これが最も単純で簡単なソリューションです。この投稿が多くの人々に役立つことを願っています。
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
現在の回答の投稿は、期限切れの証明書ファイル(.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を使用して回答に概説されている手順に従います。
また、この投稿の概略図は非常に役に立ちました。
これを行う方法についてまだ答えを探している人のために、私はこれを理解するのに1日を費やし、この投稿にリストされていることを組み合わせて行う必要がありました。Windowsでgit-bashを使用している場合は、winpty
opensslを使用してすべての呼び出しの先頭に追加する必要があります。そうしないと、voidでスタックします。疑似手順は次のとおりです。
- opensslを使用して秘密鍵とCSRを生成する
openssl req -newkey rsa:2048 -keyout private.key -out my.csr
- opensslで秘密鍵を使用してPVKを生成します
openssl rsa -in private.key -outform PVK -pvk-strong -out codesign.pvk
- GoDaddyでのコード署名証明書の生成にCSRを使用する
- GodaddyからZipをダウンロードし、SPCファイルを抽出します(OPで言及されているように)
- pvk2pfxを使用して、PVKファイルとSPCファイルをコード署名証明書に結合します。これは、signtool自体と同じSDK(およびディレクトリ)に含まれていました。
pvk2pfx.exe -pvk codesign.pvk -spc SPC_FILEPATH_HERE -pfx codesign.pfx -pi PVK_PASSWORD -po PFX_PASSWORD
IISから証明書要求を生成した場合(Windows 2012 ServerのIISでこれを実行しました)、要求を生成したサーバー/ PCで次の手順に従います-IISを開きます-トップレベルノード(サーバーノード)をクリックします-サーバーを開きます証明書の設定-右側のアクションの下にある[証明書の要求を完了する]をクリックします-spcファイルをサーバーにインポートします。
ここから、PFXファイルにエクスポートできます