如何在Linux服务器上转换PFX证书文件以用于Apache?
我从Windows证书服务创建了PFX。 PFX包含整个证书链。 (这只是一个根和主要证书,没有中间人。)
带领我,聪明的人。
答案 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命令(也在此站点上显示)将私钥保密在您自己的机器上。