我正在开发部署到具有自签名证书的服务器和接受所有证书的客户端的HTTPS服务。 我是SSL的初学者。
很明显,你_是浪费时间。 完全不用SSL也可以。 客户端应该接受此证书和所有CA证书,而不是所有证书。 如上所述,你的系统很容易受到中间人的攻击。
如果正确理解,Java客户端将使用服务器的公钥加密发送到服务器的数据。 使用服务器的公共证书进行安装。
你不在。 没有那个。 证书用于验证服务器的身份,但SSL加密通过秘密协议会话密钥对称,与证书的公钥无关。
服务器使用私钥解密数据
没有。
java客户端代码如何链接到安装的公钥,以便在与此类服务器通信时加密数据?
通常使用javax.net.ssl.trustStore属性,但不再用于加密,仅用于验证。
在这里进行SSL加密的是谁? 是Java API吗?
是的。 HttpsURLConnection已使用javax.net.ssl.SSLSocket .完成
还是在将数据发送到服务器之前需要用客户端代码处理加密?
没有。
如上文中所述,我们可以让客户接受所有证书
可以,但不安全。 不应该这样做
在这种情况下,加密和解密如何工作? 由于客户端信任库中没有安装特定于服务器的密钥,客户端如何知道用于加密的公钥?
如上所述,你在这里有误会,但是当wxdxyz收到所有证书的时候,你不知道你在和谁说话,所以任何加密都是没有意义的.请不要这样做.