如何解决SSL握手异常

时间:2019-02-18 10:36:39

标签: java ssl httpurlconnection

我正在尝试执行以下代码行:

public static String invokeRestService(String request) throws Exception {
        try {

            URL url = new URL("https://XXXXXXX:8403/v1/payment/test/req");
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.
            urlConnection.setRequestMethod("POST");
            urlConnection.setRequestProperty("Accept", "application/json");
            urlConnection.setDoOutput(true);
            OutputStreamWriter osw = new OutputStreamWriter(urlConnection.getOutputStream());
            osw.write(request);
            osw.flush();
            osw.close();
            System.out.println(urlConnection.getResponseCode());

        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return null;
    }

每当我尝试运行上面的代码时,我都会看到以下错误消息,并说SSL失败,但是当我尝试通过没有任何授权标头的邮递员访问相同的端点URL时,它按预期运行,并按预期方式返回200个响应代码。当我尝试通过JAVA代码访问该端点时,我遇到了此异常。反正有设置SSL显式吗?或如何使用系统默认的SSL?

  

javax.net.ssl.SSLHandshakeException:   java.security.cert.CertificateException:没有使用者替代名称   存在于sun.security.ssl.Alerts.getSSLException(Alerts.java:192)     在sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1946)

1 个答案:

答案 0 :(得分:0)

在查看了以下链接之后,我一直在调查您的问题:https://www.ibm.com/support/knowledgecenter/en/SS9J9E/ioc/ts_liberty_ip.html

我认为您的DNS记录不正确,它指出:您正在尝试使用不存在的URL执行SSL握手。

您能否在浏览器中或使用Curl到达URL?

如果不是这种情况,那么我认为您证书的CN(通用名称)与您要连接的网址的域名不匹配