为什么签名需要证书而不仅仅是私钥/公钥对?

时间:2012-05-08 16:00:06

标签: security certificate x509certificate

新手问题:一些供应商提出了生成动态证书的解决方案,以允许没有经典证书的用户签署文档。但为什么不单独生成私钥/公钥而不是打扰证书格式呢?

3 个答案:

答案 0 :(得分:1)

它是相同的,但你需要第三方同意私钥属于你认为它属于谁。

答案 1 :(得分:1)

(公钥)证书的目的是将公钥绑定到其主题的标识(即与密钥对关联的所有者/实体),以及可能的各种属性,告诉您证书可以用于什么。 (您可能对this question on Security.SE感兴趣。)

您始终使用私钥(不是公钥或证书)进行签名,但公钥或证书通常附有签名文档。

如果您有明确的公钥列表,并且可以独立链接到用户,则不需要证书。

证书允许第三方(已签署证书)断言标识符与公钥之间的绑定。即使您事先不知道该身份,只要您信任签署证书的实体,您就可以将签名链接到签名者的身份。

在这种情况下,动态生成的证书可能不是很有用,除非您信任动态生成证书的一方(我不确定您是指本工具本身还是您也知道的网站)。 p>

通常,X.509证书将仅用于附加到该签名,因为工具需要它,而您可以将公钥与您在验证签名的工具中直接识别的身份相匹配。有时候,它也是在预期某一天会有用的情况下完成的。

例如,如果您将自己的工件发布到中央Maven存储库,则需要使用您的PGP证书(通常仅称为PGP公钥)对其进行签名。然而,在此过程中根本没有对证书进行验证(仅具有自签名签名的PGP证书就足够了)。这使得这个过程在这种情况下相对没有意义,但如果您以后能够验证这些证书,则可以更严格地使用您想要使用的工件。

答案 2 :(得分:1)

签名首先证明某人的文件作者身份(或批准)。而关键不会证明什么。这是证书所需要的 - 某些证书颁发机构签署用户证书并证明密钥对属于颁发证书的人(或法人实体)。该文档的读者可以确保签名有效,而不仅仅是计算签名本身,还可以通过验证证书和查看证书所有者的名称。

我不太明白供应商可以动态发行证书 - 以不自签名的方式颁发证书(并且自签名证书在文档签名的上下文中没有意义)要求使用私钥对于签署证书,应该嵌入到这些供应商的软件中,因此它也容易被滥用。