【问题标题】:Does SSL/TLS communication require two public keys, one for CA and one for the server? [closed]SSL/TLS 通信是否需要两个公钥,一个用于 CA,一个用于服务器? [关闭]
【发布时间】:2016-07-09 00:09:13
【问题描述】:

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

【问题讨论】:

  • 我投票结束这个问题,因为这是关于 IT security 而不是编程。

标签: security ssl encryption https ssl-certificate


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您需要的不仅仅是 CA 的公钥。你需要他自己的证书。这就是传输证书的原因:除了自签名证书的退化情况外,这将至少包含两个证书。

    NB 服务器的公钥不是“用于加密对称共享密钥”。共享对称密钥由双方秘密独立协商,从不传输。

    【讨论】:

    • 工作密钥(复数)在两端独立派生,但从相同的输入开始,对于纯 RSA,唯一的非公开且因此安全的输入是 premaster从客户端到服务器的 RSA 加密的秘密。
    • @dave_thompson_085 正确。但预主密钥不是共享对称密钥。
    • 我还是会说“共享对称密钥是由两端秘密独立协商的,根本不传输”这句话。完全是错误的。尤其是我要说的“独立”这个词是不正确的。
    • @MaartenBodewes 那你就错了。这是协商的;根据定义,该过程是秘密且独立的;并且它永远不会被传输。
    • 完全有可能拥有一个由单个传输证书组成的有效证书链,该证书由受信任的证书签名。链条的长度当然是 2。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多