如何使用Java从客户端通过SSL进行通信

时间:2017-08-10 15:12:34

标签: java rest ssl encryption https

我正在尝试从客户端应用程序通过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公钥。 我使用哪一个,以及如何(在伪代码/代码中)使用此公钥来加密我的出站流量?

1 个答案:

答案 0 :(得分:2)

如果您使用https://作为URL协议,则基础连接将自动加密,您不需要对连接的服务器证书执行任何操作。

您不需要采取任何其他操作来加密/解密流量。

检查认证的价值在于查看发证机构是谁,以及是否需要对证书进行额外验证...例如,如果您要验证证书是否已发布到站点您正在连接,试图检测是否有人正在推出具有无与伦比的证书的中间人。

但就直线加密(防止窃听者)而言......这是自动完成的。