如何在Linux服务器上转换PFX证书文件以用于Apache?

时间:2012-01-08 01:12:24

标签: apache ssl

如何在Linux服务器上转换PFX证书文件以用于Apache?

我从Windows证书服务创建了PFX。 PFX包含整个证书链。 (这只是一个根和主要证书,没有中间人。)

带领我,聪明的人。

5 个答案:

答案 0 :(得分:186)

使用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 第二个命令将私钥提取到domain.key

使用以下命令更新Apache配置文件:

<VirtualHost 192.168.0.1:443>
 ...
 SSLEngine on
 SSLCertificateFile /path/to/domain.cer
 SSLCertificateKeyFile /path/to/domain.key
 ...
</VirtualHost>

答案 1 :(得分:95)

另外

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>

答案 2 :(得分:31)

为了让它与Apache一起工作,我们需要一个额外的步骤。

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

答案 3 :(得分:3)

采取了一些工具,但这是我最终的结果。

在IIS7上生成并安装证书。 从IIS导出为PFX

转换为pkcs12

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

注意:在将PFX转换为PEM格式时,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。

答案 4 :(得分:0)

SSLSHopper有一些关于在不同服务器之间移动的相当全面的文章。

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

只需选择本页底部的相关链接即可。

注意:他们有一个在线转换器,可以让他们访问您的私钥。它们可能是可信任的,但最好使用OPENSSL命令(也在此站点上显示)将私钥保密在您自己的机器上。