我正在尝试从客户端应用程序通过SSL登录Web服务器。
我不希望通过纯文本发送用户名和密码,因此我想使用Web服务器提供的SSL证书加密我的流量和后续的REST调用。
到目前为止,我的代码从服务器检索证书,从中我可以检索公钥。
public void testConnectionTo(String aURL) throws Exception {
URL destinationURL = new URL(aURL);
HttpsURLConnection conn = (HttpsURLConnection) destinationURL
.openConnection();
conn.connect();
Certificate[] certs = conn.getServerCertificates();
for (Certificate cert : certs) {
System.out.println(cert.getPublicKey());
}
这将返回3个不同的RSA公钥。 我使用哪一个,以及如何(在伪代码/代码中)使用此公钥来加密我的出站流量?
答案 0 :(得分:2)
如果您使用https://
作为URL协议,则基础连接将自动加密,您不需要对连接的服务器证书执行任何操作。
您不需要采取任何其他操作来加密/解密流量。
检查认证的价值在于查看发证机构是谁,以及是否需要对证书进行额外验证...例如,如果您要验证证书是否已发布到站点您正在连接,试图检测是否有人正在推出具有无与伦比的证书的中间人。
但就直线加密(防止窃听者)而言......这是自动完成的。