Answers:
使用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>
除了
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>
The certificate is not trusted because the issuer certificate is unknown
SEC_ERROR_UNKNOWN_ISSUER
错误。
为了使其能够与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-----
花了一些工具,但这就是我最终得到的。
在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中。
-nokeys
(不提取私钥)和-clcerts
(仅提取证书)。这正是马捷(Matej)所说的。
SSLSHopper有一些相当详尽的文章,介绍了如何在不同服务器之间移动。
http://www.sslshopper.com/how-to-move-or-copy-an-ssl-certificate-from-one-server-to-another.html
只需选择此页面底部的相关链接。
注意:他们有一个在线转换器,可让他们访问您的私钥。它们可能是受信任的,但是最好使用OPENSSL命令(也在本网站上显示)将私钥保持在您自己的计算机上。