CA公钥与服务器公钥:我应该使用什么来建立HTTPS连接?

时间:2013-01-02 18:18:02

标签: security ssl https public-key-encryption

我需要创建一个客户端库,通过HTTPS与单个服务(比如google.com)进行通信。 我希望图书馆附带验证服务所需的所有数据(证书或密钥)。

我很困惑这些数据应该是什么。它应该是签署google.com证书的证书颁发机构的公钥吗?或者它应该是google.com公钥?

在我看过的所有示例中,证书颁发机构的公钥用于验证连接。但似乎没必要。如果我的图书馆只与google.com会面,我是否可以通过安全通道(浏览器)获取并保存google.com公钥,然后直接使用此密钥建立经过身份验证的连接,而无需再次使用CA密钥?

1 个答案:

答案 0 :(得分:2)

您需要使用服务器的密钥对,而不是CA.建立HTTPS连接时,数据将在显示的公钥下加密。为了解密该数据,服务器将需要访问相应的私钥,如果你有CA的私钥,它将真的坏。

CA的目的是让客户端通过某个受信任的第三方验证服务器的证书。您的客户端将需要CA证书来正确验证服务器,但可能已经拥有并信任该CA.

根据您的评论进行修改:

运送CA证书而不仅仅是服务器证书有更多优点。

主要原因是,如果服务器的私钥遭到破坏,您无需向所有客户端分发新证书。由于CA应该比服务器更好地受到保护,因此CA可以简单地发布新证书,客户端可以信任该证书而无需任何额外的工作。

如果您提供了服务器的证书,则需要一种安全更新每个客户端证书的方法。