如果SSL/TLS证书没有真正的签名/CA,为什么它们是自签名的?

如果SSL/TLS证书没有真正的签名/CA,为什么它们是自签名的?,ssl,cryptography,ssl-certificate,Ssl,Cryptography,Ssl Certificate,我理解,通常SSL(或者更准确地说是X.509)证书应该由某个认证机构签署,以确保它是真实的 在某些情况下,不存在此类签名,例如,如果您为测试目的生成证书,或者如果您是认证机构(根证书)。在这些情况下,将使用自签名证书 我的问题:为什么要使用这种奇怪的自签名结构?为什么证书不能没有任何签名?包含自签名的签名有什么好处 还是仅仅因为在技术上更容易(没有签名没有特殊情况)在每个证书中始终有签名,即使它是一个无意义的签名?我想这是为了确保你不能对证书“撒谎”——也就是说,除非私钥持有者同意,否则你不能

我理解,通常SSL(或者更准确地说是X.509)证书应该由某个认证机构签署,以确保它是真实的

在某些情况下,不存在此类签名,例如,如果您为测试目的生成证书,或者如果您是认证机构(根证书)。在这些情况下,将使用自签名证书

我的问题:为什么要使用这种奇怪的自签名结构?为什么证书不能没有任何签名?包含自签名的签名有什么好处


还是仅仅因为在技术上更容易(没有签名没有特殊情况)在每个证书中始终有签名,即使它是一个无意义的签名?

我想这是为了确保你不能对证书“撒谎”——也就是说,除非私钥持有者同意,否则你不能创建证书。这可以通过CA验证证书指定的实体是否为私钥持有人来确保,或者在自签名的情况下,通过让密钥持有人对证书本身进行签名来确保。

想象一下,您正在建立自己的证书颁发机构,第一个机构:谁对您的证书进行签名

理解整个认证过程的方法是将其视为一系列含义:您有一份证书提交给您。你应该相信它吗?您可以信任颁发者,也可以查看证书并同意您信任签名者。如果你不认识签名者,你可以追踪到签名者的签名者,依此类推。不过,最终您将获得一个自签名证书

但是,获得证书相对来说比较昂贵,而且可能比较复杂,因此有些人直接建立自己的签名权限。他们是否值得信任由你来决定


关于这一点的一些评论有点愚蠢。您不能在没有签名的情况下生成证书,因为证书必须有签名才能成为有效的证书。这就是他们的定义。你可能会问为什么没有指数就不能有一个浮点数。证书的存在使得存在一些身份信息的集合和用于识别颁发者以确定信任的加密机制。没有签名,证书的“证书性”所必需的东西就丢失了


好的,让我们问一些其他问题:

  • 为什么社会保险号码有9位数?为什么你不能有一个5位数的社会保险号码
  • 为什么一个邮寄地址有那个愚蠢的zipcode
  • 我们真的需要保留一个人的名字和姓氏吗

让我们再试一次。什么是证书?它是一种将名称绑定到非对称加密密钥的公共端的数据结构。该结构是“已签名的”,这意味着您可以检测它是否由签名密钥所有者以外的任何人更改。因为您可以验证该签名,所以您对证书的真实性有一定程度的信任。因此,有效的证书必须具有可验证的签名

在这种情况下,“信任”意味着你愿意在别人的授权下,冒着无法完成你应该负责的事情的风险。如果您拥有由著名CA(如Verisign)签署的证书,您信任的实体是Verisign;您使用您从他们那里以某种值得信赖的方式获得的证书来验证他们是否签署了您正在考虑的证书

如果你有一个自签名证书,而不是一个由知名权威机构签署的证书,那么你说如果你接受证书,你愿意信任自签名者。你接受证书的意愿所基于的唯一权威是你对自签名者的直接信任。但你至少有信心证书是清廉的,因为你可以验证签名

所以现在考虑一个没有签名的证书。(从技术上讲,这称为“数据项”。)Iy可能包含名称和公共密钥之间的关联,但如果没有签名,您就不能确信它没有被第三方修改。

看到区别了吗?有了签名证书,您就有了一个双方都接受其授权的受信任的第三方。使用自签名证书,没有第三方,但您可以确信证书没有被第三方损坏。它可以像您信任证书颁发者一样被信任:您可以验证它是由拥有相应密钥另一端的人颁发的


对于未签名的“证书”,您既不能从受信任的第三方获得证书颁发给正确的人的保证,也不能保证“证书”一旦颁发,就不会被恶意的第三方修改。这就是为什么根据定义,证书必须有签名。

证书有三个主要部分

  • 身份信息
  • 公钥
  • 数字签名
  • 证书的签名方法是使用私钥对前两部分进行加密,然后将加密信息附加到证书的末尾。如果您可以使用证书中包含的公钥对签名进行解密,那么您就知道该证书是由持有匹配私钥的人签名的。签名将身份信息绑定到公钥。我使用私钥对证书进行签名,这样您就知道只有我才能读取您可能使用我的公钥加密的邮件

    现在,除非你真的亲自见过我,我给你我的证书,否则你不能真正知道身份信息是合法的我的。证书的最初目的是建立一个信任网络,首先获取你亲自遇到的人的证书,然后信任那些拥有这些人签名的证书的人,然后信任那些人…

    你需要