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


110

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

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

賢明な私を導いてください。

回答:


194

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

これには、認証局ファイルを生成するコマンドがありません。以下の答えはより完全です。
Hawkee 2013

100

さらに

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>

8
注:ca証明書が空になる場合-構成ファイルにこの行を含めないでください。
アンドロン、2013年

@Andronが3番目のコマンドを使用してCA証明書を作成すると、結果は空のcrtファイルになります。入力にserverSSL pfxファイルとrootCA pfxファイルの両方を使用してみました。(bitnami wamp)最終結果は、firefoxがThe certificate is not trusted because the issuer certificate is unknown SEC_ERROR_UNKNOWN_ISSUERエラーを返すということです。
khargoosh

コメントで報告した@khargoosh:空の場合-この行を使用/含めないでください。私も同じ状況でした。
Andron

31

これを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-----

いいね!CAのcrtも必要とするBitnamiなどの場合は、Andronからの回答を参照してCAのcrtを含めてください。Michael Ferranteの命名規則では、server-ca.crt(Andronの回答のdomain-ca.crtの代わりに)、server.crt(domain.cerの代わりに)、およびserver.key(domain.keyの代わりに)を使用します。ここで答えてください。
OldGreg、2014年

3

いくつかのツールを取りましたが、これは私が最終的に得たものです。

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(証明書のみを抽出する)を使用します。これはまさにマテジが言ったことです。
Bruno

0

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.