【发布时间】:2015-03-05 16:58:09
【问题描述】:
我正在开发一项 HTTPS 服务,该服务将部署在具有自签名证书的服务器和一个接受所有证书的客户端上。我是 SSL 新手。
我已经通过this post 和this post 了解了如何配置信任管理器以接受所有证书。
如果我理解正确,java 客户端将使用服务器的公钥(通过使用服务器的公共证书安装)来加密要发送到服务器的数据。然后服务器使用它的私钥来解密数据。
我的问题是:
1.在一个常见的场景中,我们将server.cer安装在客户端机器的信任库中(java中的cacerts)。 java 客户端代码如何链接到这个已安装的公钥以在与此类服务器通信时加密数据?谁在这里进行 SSL 加密?是 Java API 做的还是我必须在将数据发送到服务器之前在客户端代码中处理加密?
2.如上述帖子之一所述,我们可以让客户端接受所有证书。在这种情况下加密和解密将如何工作?由于我们没有在客户端的信任库中安装任何服务器特定的密钥,客户端如何知道使用哪个公钥进行加密?
我正在寻找更多技术细节。
【问题讨论】:
标签: java ssl https x509certificate