security - CA 公钥与服务器公钥 : what should I use to establish an HTTPS connection?

标签 security ssl https public-key-encryption

我需要创建一个客户端库以通过 HTTPS 与单个服务(例如 google.com)通信。 我希望图书馆随附验证服务所需的所有数据(证书或 key )。

我不知道这些数据应该是什么。它应该是签署 google.com 证书的证书颁发机构的公钥吗?还是应该是 google.com 公钥?

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

最佳答案

您需要使用服务器的 key 对,而不是 CA。建立 HTTPS 连接时,数据将根据提供的公钥进行加密。为了解密该数据,服务器需要访问相应的私钥,如果您有 CA 的私钥,那将真的很糟糕。

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

根据您的评论进行编辑:

传送 CA 证书而不只是服务器证书有更多优势。

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

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

关于security - CA 公钥与服务器公钥 : what should I use to establish an HTTPS connection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14127078/

相关文章:

java - 使用 REST 模板进行 Spock E2E 测试

security - plsql - 从另一个模式调用过程

security - 在哪里可以下载适用于任何浏览器的 JRE 7u5 插件?

java - JSF 的安全问题是什么?

http - Netty - 通过 ssl 发送 http 请求

在 Windows 上使用 lftp 进行 git ftp 推送

Facebook 使用 http 协议(protocol)打开我的应用程序,尽管在应用程序设置中配置了 https

ssl - 解码 ssl 数据包 wireshark

.htaccess - https 页面上的 htaccess 重写规则

proxy - 通过代理服务器的 HTTPS 连接