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