假设您正在建立自己的证书颁发机构,第一个:谁签署您的证书?
了解整个认证过程的方法是将其视为一系列含义:您有一个证书呈现给您。你应该相信它吗?您可以信任颁发者,或者查看证书并同意您信任签名者。如果您不知道签名者,您可以按照它回到那个签名者的签名者,依此类推。不过,最终您将获得自签名证书。
但是,获得证书相对昂贵且可能很复杂,因此有些人直接创建自己的签名授权。由您决定是否可以信任它们。
一些关于这个的 cmets 已经变得有点傻了。您不能制作没有签名的证书,因为要成为有效的证书,必须有签名。这就是它们的定义方式。您不妨问为什么没有指数就不能有浮点数。证书的存在是为了收集一些身份信息和用于识别发行者以确定信任的加密机制。如果没有签名,对证书的“证书性”至关重要的东西就会丢失。
好吧,让我们问一些其他问题:
- 为什么社会安全号码有 9 位数字?为什么不能有 5 位数的社会保险号?
- 为什么邮寄地址的邮政编码那么愚蠢?
- 我们真的需要保留一个人的名字和姓吗?
让我们再试一次。什么是证书?它是一种将名称绑定到非对称加密密钥的公共端的数据结构。该结构是“签名的”,这意味着您可以检测它是否被签名密钥所有者以外的任何人更改。因为您可以验证该签名,所以您对证书的真实性有一定程度的信任。因此,有效的证书必须具有可验证的签名。
在这种情况下,“信任”意味着您愿意冒着在他人的授权下无法执行您负责的事情的风险。如果您拥有由 Verisign 等知名 CA 签署的证书,那么您信任的实体就是 Verisign;您以某种值得信赖的方式使用从他们那里获得的证书来验证他们是否签署了您正在考虑的证书。
如果您拥有自签名证书,而不是由知名机构签署的证书,那么您就是说如果您接受该证书,您愿意信任自签名者。您愿意接受的唯一权威是您对自签名者的直接信任。但是您至少可以确信证书没有损坏,因为您可以验证签名。
所以,现在考虑一个没有任何签名的证书。 (从技术上讲,这称为“数据项”。)我可能包含名称和公钥之间的关联,但没有签名,您无法确信它没有被第三人修改派对。
看到区别了吗?使用签名证书,您就有了双方都接受的双方同意的可信第三方。使用自签名证书,没有第三方,但您可以确信证书没有被第三方损坏。它可以像您信任证书的颁发者一样被信任:您可以验证它是由拥有相应密钥另一方的人颁发的。
对于未签名的“证书”,您既不能从受信任的第三方保证该证书已颁发给正确的人,也不能保证“证书”一旦颁发,未被修改由恶意的第三方。这就是根据定义证书必须有签名的原因。