Linuxサーバー上のApacheで使用するためにPFX証明書ファイルを変換するにはどうすればよいですか?
Windows証明書サービスからPFXを作成しました。PFXには証明書チェーン全体が含まれています。(これは単なるルートであり、メインの証明書であり、中間ではありません。)
賢明な私を導いてください。
Linuxサーバー上のApacheで使用するためにPFX証明書ファイルを変換するにはどうすればよいですか?
Windows証明書サービスからPFXを作成しました。PFXには証明書チェーン全体が含まれています。(これは単なるルートであり、メインの証明書であり、中間ではありません。)
賢明な私を導いてください。
回答:
ではOpenSSLを使用するには、次のコマンドでApacheの互換性のあるフォーマットにPFXを変換することができます。
openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes -out domain.key
最初のコマンドは、公開鍵をに抽出しdomain.cer
ます。
2番目のコマンドは、秘密鍵をに抽出しdomain.key
ます。
Apache構成ファイルを次のように更新します。
<VirtualHost 192.168.0.1:443>
...
SSLEngine on
SSLCertificateFile /path/to/domain.cer
SSLCertificateKeyFile /path/to/domain.key
...
</VirtualHost>
さらに
openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes -out domain.key
また、認証局(CA)証明書を生成しました。
openssl pkcs12 -in domain.pfx -out domain-ca.crt -nodes -nokeys -cacerts
そしてそれをApache設定ファイルに含めました:
<VirtualHost 192.168.0.1:443>
...
SSLEngine on
SSLCertificateFile /path/to/domain.cer
SSLCertificateKeyFile /path/to/domain.key
SSLCACertificateFile /path/to/domain-ca.crt
...
</VirtualHost>
The certificate is not trusted because the issuer certificate is unknown
SEC_ERROR_UNKNOWN_ISSUER
エラーを返すということです。
これをApacheで動作させるには、もう1つの手順が必要でした。
openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes -out domain_encrypted.key
openssl rsa -in domain_encrypted.key -out domain.key
最後のコマンドは、Apacheで使用するためにキーを復号化します。domain.keyファイルは次のようになります。
-----BEGIN RSA PRIVATE KEY-----
MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3
LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp
YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG
A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq
-----END RSA PRIVATE KEY-----
いくつかのツールを取りましたが、これは私が最終的に得たものです。
IIS7で証明書を生成およびインストールしました。IISからPFXとしてエクスポート
pkcs12に変換
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
注:PFXをPEM形式に変換している間、opensslはすべての証明書と秘密鍵を1つのファイルに入れます。テキストエディターでファイルを開き、各証明書と秘密キー(BEGIN / ENDステートメントを含む)を独自のテキストファイルにコピーして、それぞれcertificate.cer、CAcert.cer、privateKey.keyとして保存する必要があります。
-----BEGIN PRIVATE KEY-----
Saved as certificate.key
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
Saved as certificate.crt
-----END CERTIFICATE-----
Webminを含むapache vhostに追加されました。
-nokeys
(秘密鍵を抽出しないで)と-clcerts
(証明書のみを抽出する)を使用します。これはまさにマテジが言ったことです。
SSLSHopperには、異なるサーバー間での移動に関するかなり徹底的な記事があります。
http://www.sslshopper.com/how-to-move-or-copy-an-ssl-certificate-from-one-server-to-another.html
このページの下部にある関連リンクを選択してください。
注:彼らはあなたの秘密鍵にアクセスできるオンラインコンバーターを持っています。おそらく信頼できますが、OPENSSLコマンド(このサイトにも表示されています)を使用して、自分のマシンで秘密鍵を秘密にしておくことをお勧めします。