javax.net.ssl.SSLPeerUnverifiedException

Met excpetion when try to call one https service during different cloud server, pasted below error details:

xxxx error: I/O error on GET request for \"https://xxxxxxxxx/documents/document/docs/form": Certificate for <xxxxxxxxx> doesn't match any of the subject alternative names: []; nested exception is javax.net.ssl.SSLPeerUnverifiedException: Certificate for </xxxxxxxxx/> doesn't match any of the subject alternative names

Root casue: Sometimes, when we are using RestTemplate to make a call to a HTTPS endpoint, we can run into certificate issue. Doing the SSL check is the default behavior of the RestTemplate.

Solusion: This is MS to MS calling, if source or destination have the certificate validation, then the handshake will failed, so I disable the hostname validation from consumer end.

Please find my code for remove the validation:

create restTemplateWithoutHostnameVerifier:

@Bean(name = "restTemplateWithoutHostnameVerifier")
	public RestTemplate RestTemplateWithoutHostnameVerifier() throws Exception {
		HttpComponentsClientHttpRequestFactory hcchrf = null;
		
		hcchrf = new HttpComponentsClientHttpRequestFactory(createHttpClientWithoutHostnameVirify());
		hcchrf.setConnectTimeout(connectionTimeout);
		hcchrf.setReadTimeout(readTimeout);
		return new RestTemplate(hcchrf);
	}

createHttpClientWithoutHostnameVirify method():

private HttpClient createHttpClientWithoutHostnameVirify() throws Exception {
		HttpClientBuilder httpClientBuilder = createHttpClientBuilder(NoopHostnameVerifier.INSTANCE);
		return httpClientBuilder.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE).build();
	}

use the restTemplate when calling sevice it will disable the validation:

    @Autowired
    @Qualifier("restTemplateWithoutHostnameVerifier")
    RestTemplate restTemplateWithoutHostnameVerifier;

    public DocData getDocument() throws Exception {
        response = restTemplateWithoutHostnameVerifier.exchange(xxxxxx);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值