当我们将自签名证书添加到设备的受信任根证书列表中时,我们已经信任它了。那么,为什么要用服务器的私钥签名呢?
签名只确保证书由可靠的权威机构验证,并且客户端可以通过使用从不同渠道获得的颁发者的公钥来验证签名。但是,自签名证书的公钥来自证书本身。签字似乎是多余的,不是吗?
发布于 2020-06-05 18:23:38
证书是一种信封,它包含公钥、为使用该证书的目的而定义的一些属性以及颁发者的签名。
没有签名就没有证书。如果你不签署证书,那就不是证书。不能向信任存储区添加普通公钥,只能添加证书。
你用什么钥匙,不重要。您可以生成一个新的密钥对,为公钥生成证书,并使用该密钥的私钥对其进行签名。自签名意味着证书由与此证书中包含的公钥匹配的私钥签名。
发布于 2020-06-06 01:14:07
在X.509中,在构建证书链之后会检查签名的有效性(即信任度)。这是一个过程,在这个过程中,每个证书(可能是无效的)证书的Issuer字段被查找并与验证者所知道的证书相匹配。重要的是要注意的是,发行人是由“卓越的名称”(通常包括共同的名称,但可以有其他领域,如组织,公司,国家等)。而不是公钥--这是因为X.509是X.500协议套件的一部分,这是一种全球电话目录类型的东西,后来又添加了公钥。(这几乎是每个人使用过的唯一部分都无关紧要。)
当您正在构建证书链时,您将获取叶子证书,查找发行人并将其添加到链中,进行漂洗和重复。如果你找不到发行人,你就会早早地失败--你要么错过了根,要么找不到中间证书。在自签名证书中,颁发者的DN与cert自己的DN相同,这意味着您已经将颁发者添加到链中,并且可以终止搜索。
所以这与需要自我签名没有任何关系--你真的需要一个自颁发的证书,而签名只是你必须做的事情,才能使它在语义上正确。
发布于 2020-06-06 02:27:05
通过对证书进行自签名,可以证明您持有与证书中的公钥相对应的私钥。
https://security.stackexchange.com/questions/232789
复制相似问题