.pfx.cert证书文件有什么区别?

我们是否分发.pfx.cert用于客户端身份验证?

评论

另外[1],[2],[3]

#1 楼

有两个对象:私钥,服务器拥有该私钥,对其保密,并用于接收新的SSL连接。以及在数学上链接到私有密钥并被称为“公共”的公共密钥:它是连接初始步骤的一部分发送给每个客户端。

证书的名义上是公钥的容器。它包括公用密钥,服务器名称,有关服务器的一些其他信息以及证书颁发机构(CA)计算的签名。当服务器将其公开密钥发送给客户端时,它实际上会发送其证书以及其他一些证书(该证书包含签署了其证书的CA的公钥,以及签署了CA证书的CA的证书,等等)。证书本质上是公共对象。

有人使用“证书”一词来指定证书和私钥。这是造成混乱的常见原因。我个人遵循严格的定义,即证书仅是公钥的已签名容器。

.pfx文件是PKCS#12存档:一个袋子,其中可以容纳许多带有可选对象的对象密码保护;但是,通常,PKCS#12归档文件包含一个证书(可能带有其CA证书的各种集合)和相应的私钥。通常包含一个证书,一个证书,一个证书,没有任何包装(没有私钥,没有密码保护,只有证书)。

评论


在进行客户端身份验证时,我们要求在客户端浏览器上安装ssl客户端证书。这是.pfx文件还是.cert文件?

– Xsecure123
13年1月21日在12:31

证书是公共数据;每个人都有。但是,客户端身份验证是关于让客户端执行只有该客户端才能做的事情。所以客户必须知道一些不公开的东西,那就是私钥。因此,客户端必须具有私钥及其证书。如果密钥是从客户端浏览器生成的,则预期的设置是将其与证书一起导入到客户端。因此,.pfx文件。

–托马斯·波宁(Thomas Pornin)
13年1月21日在13:26

我从安装证书的IIS服务器中获得了.pfx文件。这是应该分发的.pfx文件吗?由于CA提供了.cert文件,包括安装在服务器上的密钥。

– Xsecure123
13年1月22日在11:13

@ Xsecure123不;这里有两种情况-托马斯只回答客户端身份验证(每个客户端都有自己的私人证书来证明自己的身份)。 -听起来好像您在做其他事情-听起来好像您在IIS中使用自签名证书,客户端不信任它。 -在这种情况下,应从服务器向客户端提供.cer文件。 -因为客户端只需要公钥即可信任服务器。 -如果他们还具有私钥,则他们可以模拟服务器或解密其流量,而这不是您想要的。

– BrainSlugs83
18年1月26日在20:43

@ BrainSlugs83:您所说的私人证书是什么意思。 Thomas提到证书是公共数据。你能详细说明一下吗?

–法汉·希尔吉·安萨里(Farhan Shirgill Ansari)
20年5月5日,16:14

#2 楼

我知道这是一个古老的线程,但是如上所述,对于以后的读者来说,不,您不要分发.pfx文件,因为该文件包含私钥。您可以通过以下方法从.pfx文件中提取并分发证书(公共证书):https://stackoverflow.com/questions/403174/convert-pfx-to-cer

评论


您应该将pfx文件安全地存储在服务器上的什么位置?显然,您不希望其他应用程序使用您的PFX文件,但是我也不希望将其与我的应用程序一起存储。您是否只需将其导入机器证书管理器并以编程方式访问它?

–马特
16年8月2日在4:56



@Matt私钥管理本身就是一个完整的话题。在这里和这里都可以找到一些相关的答案(后者与PFX文件并不严格相关,但仍然很新颖)。 PFX文件本身不需要存储在服务器上(即,如果您使用的是IIS7,则将导入PFX;否则,您将从PFX中提取证书和私钥到它们自己的文件中) 。

–塔夫纳卜
16年8月4日在18:51

#3 楼


.pfx和.cert证书文件有什么区别?

@Thomas Pornin提供的答案非常好。

我们分发.pfx还是.cert进行客户端身份验证?

这取决于使用的过程。
设置外部客户端以使用证书进行身份验证的典型过程如下:1)客户端生成不对称的密钥对(公钥和私钥); 2)客户端为公钥生成证书签名请求,并将其发送到服务器; 3)服务器签署公钥,并将此签名(“证书”)返回给客户端; 4)客户端将私钥和该证书一起存储在其密钥库中。现在,当客户端连接到服务器时,将显示证书并验证客户端。
在上述情况下,“。cert”发送回客户端。
内部,许多组织将执行此过程适用于其员工。在这种情况下,将发生以下情况:IT人员为员工生成公共和私有密钥对以及证书签名请求。然后,他们使用其私有证书颁发机构对公共密钥进行签名,并将生成的证书以及相应的私有密钥和所有中间CA证书(“证书链”)放置在用户的密钥库中。
在这种情况下,则“ .pfx”(或“ .pem”)将是适当的,因为它将包含客户端身份验证所需的所有项目:私钥,证书和证书链。
搜索“证书自动注册” ”,以为您的企业用户和设备自动执行此过程。