这个问题在这里已有答案:
我正在尝试执行以下代码行:
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)
在查看此链接后,我正在调查您的问题:https://www.ibm.com/support/knowledgecenter/en/SS9J9E/ioc/ts_liberty_ip.html
我认为您的DNS记录不正确,其中指出:您正尝试使用不存在的URL执行SSL握手。
您可以在浏览器中使用Curl或使用Curl吗?
如果不是这种情况,那么我认为您的证书的CN(通用名称)与您要连接的网址的域名不匹配