web-dev-qa-db-ja.com

Linuxサーバー上のApacheで使用するためにPFX証明書ファイルを変換するにはどうすればよいですか?

Linuxサーバー上のApacheで使用するためにPFX証明書ファイルを変換するにはどうすればよいですか?

Windows証明書サービスからPFXを作成しました。 PFXには、証明書チェーン全体が含まれています。 (これは単なるルートであり、メイン証明書であり、中間証明書ではありません。)

賢い者を導いてください。

102
AaronJAnderson

OpenSSL を使用すると、次のコマンドでpfxをApache互換形式に変換できます。

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>
187
Matej

に加えて

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>
95
Andron

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-----
31

いくつかのツールを試しましたが、これが私がやったことです。

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-----

Apache vhost w/Webminに追加されました。

3
AaronJAnderson

SSLSHopperには、異なるサーバー間の移動に関するかなり徹底的な記事があります。

http://www.sslshopper.com/how-to-move-or-copy-an-ssl-certificate-from-one-server-to-another.html

このページの下部にある関連リンクを選択してください。

注:彼らはあなたの秘密鍵にアクセスできるオンラインコンバータを持っています。それらはおそらく信頼できますが、OPENSSLコマンド(このサイトにも表示)を使用して、自分のマシンで秘密鍵を秘密にしておく方が良いでしょう。

0
Simon_Weaver