首页 文章

SSL / TLS通信是否需要两个公钥,一个用于CA,另一个用于服务器? [关闭]

提问于
浏览
2

我一直在阅读有关安全通信的内容,并对以下内容感到困惑 . 如果我错了,请纠正我 . 在我看来,客户端需要两个公钥来 Build SSL连接 . 第一个是CA的公钥,用于验证服务器发送的证书上的签名 . 证书上的CA签名是使用CA的私钥生成的,因此需要CA的公钥来验证它 . 第二个是用于加密对称共享密钥的服务器的公钥 . 共享密钥由客户端生成并发送到服务器以使用服务器的私钥进行解密,因此需要服务器的公钥来加密它 . 因此,我们需要两个不同的公钥 . 它是否正确?如果是这样,服务器发送的证书是否包含两个公钥?

2 回答

  • 2

    这是正确的,客户端需要链中的每个公钥 .

    如果是这样,服务器发送的证书是否包含两个公钥?

    服务器发送的证书通常不仅是一个证书,而是证书链 . 证书永远不会由权威的根证书签名,而是由中间证书签署,中间证书本身由根证书或其他中间证书签名 . 浏览器只知道根证书,因此服务器需要发送通向根证书的整个链,否则链中会缺少证书,并且无法验证服务器证书是否由受信任的机构签名 . 此链中的每个证书都包含自己的公钥,因此可以使用直接父公钥验证链中的每个证书,直到您使用指示浏览器信任的根证书验证链中的最后一个证书 .

  • 0

    您需要的不仅仅是传输证书链的原因:除了自签名证书的退化情况之外,这将包含至少两个证书 .

    NB服务器的公钥不是“用于加密对称共享密钥” . 共享对称密钥由两端秘密地独立协商,并且根本不传输 .

相关问题