.cer和pfx文件和有什么不一样?


82

人们曾经说过-

cer-以X.509标准格式存储的证书。该证书包含有关证书所有者的信息...以及公共和私有密钥。

pfx-代表个人交换格式。它用于在单个文件中交换公共和私有对象。可以从.cer文件创建pfx文件。也可以用于创建软件发布者证书。

**从此链接获得引用cer,pvk和pfx文件之间有什么区别?**

但是没有人说何时应该使用CERT文件以及何时应该使用PFX文件。如果可能的话,请讨论应该何时获取CERT文件和何时应当获取PFX文件的情况。谢谢。


同样[1][2][3]
Pacerier '16

Answers:


98

.pfx包含相关证书的公钥和私钥(切勿在组织外部共享此证书);它可以用于网站上的TLS / SSL,数字签名消息或授权令牌,或用于对合作伙伴系统进行身份验证。.cer文件仅具有公共密钥(通常与集成合作伙伴交换)。它可以用来验证令牌或客户端身份验证请求,它是HTTP客户端通过SSL握手从服务器接收到的内容。


如果证书文件存储私钥?我看到大多数时候人们将证书文件与wcf一起使用...为什么?他们为什么不选择pfx文件?哪一个最安全?
托马斯

您错过了一个重要的观点,即当人们使用cert文件和pfx文件时……这是最重要的。感谢您的回答。
托马斯

cert文件是X.509证书的通用术语。在Windows世界中,pfx受密码保护,并且永远不要离开组织。cer文件可以从X.509证书作为公共密钥导出。如果使用WCF客户端的X.509证书进行消息签名或身份验证,则需要安装pfx文件(或在文件夹中可用)。我想念@Thomas什么?
PeterB

1
请回答我的第二个问题。
托马斯

3
@托马斯你能重复一遍吗?您的帖子没有问号,因此很难告诉您未回答的内容。顺便说一句,cer文件不包含私钥。;)
PeterB 2014年

9

2种方案的工作方式略有不同:

场景1:
Web浏览器(客户端)使用SSL通过HTTPS访问Web页面(服务器)。

服务器具有包含两个密钥的.PFX文件。客户端连接到服务器上的网站,并且服务器将其公钥(.CER文件)的副本作为SSL握手的一部分发送给客户端。客户端随后生成“会话密钥”,并使用从服务器接收的公共密钥对其进行加密。然后将会话密钥发送回服务器并解密以确认其真实性。如果成功,则客户端和服务器现在都共享“会话密钥”以使用对称加密进行通信(即,客户端和服务器现在都使用相同的会话密钥对彼此之间的所有消息进行加密和解密。所有这些都在在您在地址栏中输入URL到看到网页出现之间,在Web浏览器后台的幕后进行。

场景2:
应用程序(客户 端)使用SSH连接到FTP站点(服务器)

远程桌面(客户端到服务器)
(两个示例都适用)

在这种情况下,双方客户端和服务器拥有自己的私人和公共密钥对
(相比之下,在这个线程中提到的其他例子,当一个服务器有两个按键,并且客户端只有公钥只能说明)

现在,出于解释目的-让我们将密钥对标记为:
A1A2 =分别作为服务器的私钥和公钥
B1B2 =分别作为服务器的私钥和公钥

使用此模型,该线程中的先前帖子都在讨论服务器何时具有A1A2.PFX文件),并且仅与客户端共享A2.CER)的副本

FTP或SSH连接(还有其他示例)在整个客户端-服务器通信中由A1A2B1B2密钥组成。例如,
-客户端连接到FTP服务器。
-服务器将其公钥(A2)的副​​本发送给客户端。
-客户端将自己的公钥(B2)发送回服务器,从而完成握手。
-现在将使用非对称加密

服务器现在具有A1,(其自己的私有),A2其自己的公共)和B2客户的公共)的副本。客户
端现在具有B1,(其自己的私有),B2其自己的公共)和A1的副本(服务器的公开

客户
端到服务器的通信:客户端使用A2(服务器公钥)对绑定到服务器的消息进行加密,服务器使用A1(服务器私钥)解密它们。

服务器到客户端的通信:
服务器使用B2(客户端公共密钥)来加密绑定到客户端的消息,客户端使用B1(客户端私钥)解密它们

关于.CER和.PFX文件类型,服务器具有自己的.PFX,不应将其分发到组织外部,而应将.CER文件分发给客户端。

更多信息可以在这里找到:https :
//www.digicert.com/ssl-cryptography.htm

而在这里:https :
//serverfault.com/questions/107433/why-does-a-ssh-public-key-sit-on-the-server-and-not-with-the-client


0

根据我的经验(这并不像我想要的那么大),我在IIS服务器上配置https绑定时使用了pfx文件(因为它既包含公钥也包含私钥,所以只使用该文件就可以了) cer文件只是大多数情况下密钥对的公共部分,在nginx或apache服务器上配置SSL流量时,您需要将它与.key文件结合使用,

据我了解,再也没有其他理由使用其中一个,


0

如前所述,这个问题有点像苹果和橘子,因为cer文件只是公共密钥,而pfx文件同时包含公共密钥和私有密钥。

因此,更公平的问题是您何时要使用pfx文件而不是pem文件。鉴于pfx文件过于复杂而受到批评,第二个问题的合理答案可能是:如果您正在运行IIS,并且您的配置绝对不允许您使用其他任何东西,则您永远只想使用pfx文件。 。

来源:https//en.wikipedia.org/wiki/PKCS_12 (参考脚注是Peter Gutmann的文章。)


-2

SSL使用异步加密,这意味着将一个密钥(私钥)分配给“拥有”密钥对的服务器,而另一个密钥(公钥)则自由分发。
之所以称为异步,是因为用私钥加密的数据只能用公钥解密,而用公钥加密的数据只能用私钥解密。因此,如果您想安全地发送给所有者,请使用其私钥对其进行加密,而他将是唯一可以解密该密钥的人。如果所有者想要证明自己发送了某些内容,则可以使用私钥对其进行加密,拥有公钥的任何人都可以对其进行解密。(一旦安装了证书,通常是通过浏览器或电子邮件工具在后台进行的。)
由于所有者希望将该私钥保持私有状态,因此将对其进行密码保护,并且仅将其提供给拥有的服务器(通常在PFX或P12文件中)。但是公钥将自由分发(通常在CER文件中)。


“用他的私钥加密它,他将是唯一可以解密它的人。” 我想你的意思是,用他的公钥加密它。
Dave Goldsmith,

1
我认为您的意思是“不对称”,而不是“异步”。
内特·巴贝蒂尼

您部分正确-它使用了非对称和对称加密。SSL最初在客户端和服务器之间使用非对称加密-但是直到客户端可以验证信任并生成对称密钥,然后再将其发送回服务器(使用非对称加密),然后所有真实数据通信才会进行使用对称加密。
亚伦·克劳斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.