Https请求中SSL证书认证问题
在调用第三方服务接口过程中,已调试生产环境接口成功的情况下 ,切换测试环境配置 发现接口报错:
Certificate for <openapi.sandbox.winit.com.cn> doesn't match any of the subject alternative names: [xx第三方链接地址xx]
起初猜想问题在 切换测试环境配置错误,后进行仔细比较,确认切换后的测试环境配置参数无问题。 通过老大提醒后猜想是不是因为SSL认证问题,经查阅网上资料发现: HttpClient需要手动配置忽略SSL认证。
代码如下:
HttpClient httpClient = null;
try {
SSLConnectionSocketFactory scsf = new SSLConnectionSocketFactory(
SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build(),
NoopHostnameVerifier.INSTANCE);
httpClient = HttpClients.custom().setSSLSocketFactory(scsf).build();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
}
问题解决。
bug总结
第三方服务商在服务器只配置了生产环境证书,并没有配置测试环境,所有在生产环境第三方接口请求成功的情况下,切换测试环境配置参数,接口调用失败,后进行HttpClient忽略SSL证书配置,解决问题。