新手问题:一些供应商提出了诸如生成动态证书的解决方案,以允许没有经典证书的用户签署文件。但是为什么不单独生成私钥/公钥而不是证书格式呢?
3 回答
(公钥)证书的目的是将公钥绑定到其主体的身份(即与密钥对关联的所有者/实体),以及可能告诉您证书可用于什么的各种属性。(您可能对 Security.SE 上的这个问题感兴趣。)
您始终使用私钥(不是公钥或证书)进行签名,但公钥或证书通常附在签名文档中。
如果您有一个明确的已知公钥列表并且可以独立链接到用户,则不需要证书。
证书允许第三方(已签署证书)断言标识符和公钥之间的绑定。即使您事先不知道该身份,您也可以将签名链接到签名者的身份,只要您信任签署证书的实体即可。
在这种情况下,动态生成的证书可能不是很有用,除非您信任动态生成证书的一方(我不确定您是指工具本身还是您也知道的网站)。
通常,X.509 证书将仅用于附加到该签名,因为工具需要它,而您可以将公钥与您在验证签名的工具中直接知道的身份进行匹配。有时,它也只是在预期有一天会有用的情况下完成的。
例如,如果您将自己的工件发布到中央 Maven 存储库,则需要使用您的 PGP 证书(通常仅称为 PGP 公钥)对其进行签名。然而,在此过程中根本没有对证书进行验证(仅具有自签名签名的 PGP 证书就足够了)。这使得这个过程在这种情况下相对没有意义,但是如果您以后能够验证这些证书,则可以更严格地使用您想要使用的工件。
相同,但您需要第三方同意私钥属于您认为属于的任何人。
签名首先证明了某人对文件的署名(或批准)。单独的钥匙并不能证明任何事情。这就是证书所需要的 - 一些证书颁发机构签署用户的证书并证明密钥对属于颁发证书的个人(或法人实体)。文档的阅读者不仅可以通过计算签名本身,还可以通过验证证书并查看证书所有者的姓名来确保签名有效。
我不太明白哪些供应商可以动态颁发证书 - 以非自签名的方式颁发证书(并且自签名证书在文档签名的上下文中几乎没有意义)需要用于签名的私钥证书,应该嵌入到这些供应商的软件中,因此它也容易被滥用。