pfx文件是不是包含根证书
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pfx文件是不是包含根证书相关的知识,希望对你有一定的参考价值。
参考技术A 包含。因为pfx有两个要点:
1.pfx 文件中包含私钥与公钥和证书。
2.pfx 有访问密码保护:私钥不能随便让人查看,访问密码是为了进行安全控制。即使pfx文件被别人得到,没有访问密码也较难获取私钥。
其他拓展 cer和pfx的区别:
1.带有私钥的证书:由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以pfx作为证书文件后缀名。
2.二进制编码的证书:证书中没有私钥,DER 编码二进制格式的证书文件,以cer作为证书文件后缀名。
3.Base64编码的证书:证书中没有私钥,BASE64 编码格式的证书文件,也是以cer作为证书文件后缀名。
如何转换 PFX 证书文件以在 linux 服务器上与 Apache 一起使用?
【中文标题】如何转换 PFX 证书文件以在 linux 服务器上与 Apache 一起使用?【英文标题】:How can I convert a PFX certificate file for use with Apache on a linux server? 【发布时间】:2012-02-05 04:05:35 【问题描述】:我从 Windows 证书服务创建了 PFX。 PFX 包含整个证书链。 (这只是根证书和主证书,没有中间证书。)
引导我,聪明的人。
【问题讨论】:
【参考方案1】:使用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>
【讨论】:
缺少生成证书授权文件的命令。下面的答案比较完整。【参考方案2】:除了
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>
【讨论】:
注意:如果 ca 证书为空 - 请不要在配置文件中包含此行。 @Andron 当我使用第三个命令创建 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 正如我在评论中报告的那样:如果它是空的 - 只是不要使用/包含这一行。我也有同样的情况。【参考方案3】:
要让它与 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-----
【讨论】:
不错!对于 Bitnami 或其他需要 CA crt 的人,请查看 Andron 的答案以包含 CA crt。使用 server-ca.crt(在 Andron 的答案中代替 domain-ca.crt)、server.crt(代替 domain.cer)和 server.key(代替 domain.key)命名法在 Michael Ferrante 的在这里回答。【参考方案4】:使用了一些工具,但这就是我最终得到的。
在 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 所说的。【参考方案5】:
SSLSHopper 有一些关于在不同服务器之间移动的非常详尽的文章。
http://www.sslshopper.com/how-to-move-or-copy-an-ssl-certificate-from-one-server-to-another.html
只需选择此页面底部的相关链接即可。
注意:他们有一个在线转换器,可以让他们访问您的私钥。它们可能是值得信任的,但最好使用 OPENSSL 命令(也显示在此站点上)将私钥保密在您自己的机器上。
【讨论】:
以上是关于pfx文件是不是包含根证书的主要内容,如果未能解决你的问题,请参考以下文章
使用OpenSSL创建多级CA证书链签发证书并导出为pkcs12/p12/pfx文件
如何转换 PFX 证书文件以在 linux 服务器上与 Apache 一起使用?