2012-01-08 3 views
88

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

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

私をリードしてください。

答えて

165

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

これはにコマンドが含まれていません認証局ファイルを生成します。以下の答えはより完全です。 – Hawkee

+0

これはWindowsでも動作します。 +1は私のお尻を保存。 – craigmoliver

3

は周りのいくつかのツールを取ったが、これは私がしてしまったものです。

IIS7で証明書を生成してインストールしました。 は

openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes 

NOTEをPKCS12に変換

IIS

からPFXとしてエクスポート:PEMフォーマットにPFXを変換しながら、OpenSSLは単一のファイルにすべての証明書と秘密鍵を配置します。テキストエディタでファイルを開き、各証明書&秘密鍵(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に追加されました。

+0

秘密鍵と証明書を同じファイルに入れないようにするには、 '-nokeys'(秘密鍵を抽出しない)と' -clcerts'(証明書のみを抽出する)を使います。これはまったくマテイが言ったことです。 – Bruno

+0

ブルーノ、ありがとう。私は彼に正しい答えの賞を与えるでしょう。知っておいてよかった。 – AaronJAnderson

26

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

いいね! BitnamiやCAのcrtを必要とする人には、Andronからの回答を見て、CAのcrtを含めてください。 Andranの回答のdomain-ca.crtの代わりにserver-ca.crtを使用し、domain.cerの代わりにserver.crtを使用し、マイケルフェランテのserver.key(domain.keyの代わりに)命名法を使用します。ここで答えてください。 – OldGreg

0

SSLSHopperには、さまざまなサーバー間を移動するためのかなり徹底した記事があります。

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

ただ、このページの下部にある関連リンクを選択します。

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

78

さらに

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

注:CA証明書が空の場合は、この行を設定ファイルに含めないでください。 – Andron

+6

これはより完璧なので、これが最良の答えだと思います。 – Hawkee

+2

これは正解とマークする必要があります。 –

関連する問題