java.security.cert.CertificateException: No subject alternative names presen

问题描述:

服务需要调用第三方,只能生产调用

上了生产测试相关逻辑,调用第三方接口报错,错误信息:

ava.security.cert.CertificateException: No subject alternative names presen

使用的是HttpURLConnection

问题解决

增加如下代码


	static {
		try {
			trustAllHttpsCertificates();
			HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
				public boolean verify(String urlHostName, SSLSession session) {
					return true;
				}
			});
		} catch (Exception e) {
		}
	}

	private static void trustAllHttpsCertificates() throws NoSuchAlgorithmException,     KeyManagementException {
		TrustManager[] trustAllCerts = new TrustManager[1];
		trustAllCerts[0] = new TrustAllManager();
		SSLContext sc = SSLContext.getInstance("SSL");
		sc.init(null, trustAllCerts, null);
		HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
	}

	private static class TrustAllManager implements X509TrustManager {

		public X509Certificate[] getAcceptedIssuers() {
			return null;
		}

		public void checkServerTrusted(X509Certificate[] certs, String authType) throws CertificateException {
		}

		public void checkClientTrusted(X509Certificate[] certs, String authType) throws CertificateException {
		}
	}

猜你喜欢

转载自blog.csdn.net/wangwenzhe222/article/details/130149576
今日推荐