我知道通常SSL (或者更准确地说是X.509)证书应该由一些认证机构签名,以确保它是真实的。
在某些情况下,不存在这样的签名,例如,如果您为测试目的生成证书,或者如果您是认证机构(根证书)。在这些情况下,使用自签名证书。
我的问题是:为什么要使用这种奇怪的自签名结构?为什么证书不能简单地没有任何签名?包括自签名签名增益在内的内容是什么?
还是仅仅因为在每个证书中总是有一个签名在技术上更容易(没有特例没有签名),即使它是一个毫无意义的签名?
发布于 2009-05-16 01:20:25
证书有三个主要部分
证书是通过使用私钥加密前两部分来签名的,然后将加密的信息附加到证书的末尾。如果您可以用证书中包含的公钥解密签名,那么您就知道证书是由持有匹配私钥的人签名的。签名将标识信息绑定到公钥。我用我的私钥签署我的证书,这样你才知道只有我可以读取消息,这样你就可以用我的公钥加密。
现在,除非你真的亲自见过我,我给你我的证书,否则你不可能真正知道身份信息是合法的我的。证书的最初目的是建立一个信任网络,首先获得你亲自遇到的人的证书,然后信任那些拥有这些人签署的证书的人,然后是那些人。
发布于 2009-05-16 01:19:19
想象一下,你正在建立自己的认证机构,第一个就是:谁签署了你的证书?
理解整个认证过程的方法是将其看作是一系列的含义:您有一个证书展示给您。你应该相信它吗?您可以信任签发人,也可以查看证书,并同意信任签名人。如果你不认识签字人,你可以跟着它回到那个签字人的签名人那里,以此类推。不过,最终,你会得到一个自我签署的证书。
获得证书的成本相对较高,而且可能很复杂,因此有些人会直接授予自己的签名权。由你来决定他们是否值得信任。
一些关于这方面的评论变得有点愚蠢。您不能在没有签名的情况下制作证书,因为证书必须具有签名,才能成为有效的证书。他们就是这样定义的。你最好问问为什么没有指数就不能有浮点数。存在证书,因此存在一些身份信息集合和用于标识发行人以确定信任的加密机制。如果没有签名,证书的“证书”所必需的东西就会丢失。
好吧,我们再问几个问题:
我们再试一次。什么是证书?它是将名称绑定到非对称加密密钥的公共端的数据结构。该结构为“签名”,这意味着您可以检测到除了签名密钥的所有者之外,其他人是否更改了该结构。因为您可以验证该签名,所以您对证书的真实性有一定程度的信任。因此,有效的证书必须具有可验证的签名。
在这种情况下,“信任”意味着你愿意冒着不履行你的责任的风险,在别人的授权下。如果您有一个由著名CA (如Verisign )签名的证书,您所信任的实体就是Verisign;您可以使用从他们那里获得的证书来验证他们是否签署了您正在考虑的证书。
当你有一个自我签署的证书,而不是一个由知名权威签署的证书,那么你是说如果你接受证书,你愿意信任自己的签名人。你唯一可以根据你的意愿接受的权威是你对自己签署者的直接信任。但是您至少有信心证书没有损坏,因为您可以验证签名。
所以,现在考虑一个没有任何签名的证书。(从技术上讲,这被称为“数据项”。)Iy可能包含名称和公共端密钥之间的关联,但是如果没有签名,您就不能相信它没有被第三方修改过.。
看到区别了吗?在签署证书后,您有一个双方都认可的、双方都接受的可信任的第三方。使用自签名证书,没有第三方,但您可以确信证书没有被第三方损坏。它可以被信任,就像信任证书的颁发者一样:您可以验证它是由拥有相应密钥的另一端的人颁发的。
对于未经签名的“证书”,您既不能从可信的第三方那里得到关于证书已颁发给正确的人的保证,也不能保证“证书”一旦发出,就不会被恶意的第三方修改。这就是为什么,根据定义,证书必须有一个签名。
发布于 2009-09-04 21:45:26
如果你自己在证书上签名,它会向某人证明你实际上控制了那个签名的秘密密钥--也就是说,这是你的证书。
否则,您只需创建一个随机数的公钥,该公钥符合证书的格式,但不是真正的证书。
https://stackoverflow.com/questions/871388
复制相似问题