[HTTPS] Hostname in cerificate didn't match?
특정 업체의 API를 호출하던 중 아래와 같은 에러가 발생
위의 에러발생 이유는 해당 업체의 인증서가 나에게 등록 되어있지 않기 때문이다. 해당 업체의 인증서를 등록하여 해결하는 방법도 있지만, 나는 데이터가 원하는데로 전달되는지만 확인하면 되었기에 인증서를 무시하고 요청하는 방식을 사용하였다.
pom.xml 에 httpclient 추가
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
인증서 무시를 위해 사용한 코드
refs :
사용한 코드 참고 사이트
Hostname in cerificate didn't match?
Hostname in certificate didn't match?
SSLPeerUnverifiedException
위의 에러발생 이유는 해당 업체의 인증서가 나에게 등록 되어있지 않기 때문이다. 해당 업체의 인증서를 등록하여 해결하는 방법도 있지만, 나는 데이터가 원하는데로 전달되는지만 확인하면 되었기에 인증서를 무시하고 요청하는 방식을 사용하였다.
pom.xml 에 httpclient 추가
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
인증서 무시를 위해 사용한 코드
@Test public void shouldAcceptUnsafeCerts() throws Exception{ HttpClient httpclient = httpClientTrustingAllSSLCerts(); final String uri = "YOUR URI"; HttpGet httpGet = new HttpGet(uri); HttpResponse response = httpclient.execute(httpGet); System.out.println(EntityUtils.toString(response.getEntity())); } private HttpClient httpClientTrustingAllSSLCerts() throws HttpClientBuilder builder = HttpClientBuilder.create(); SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, getTrustingManager(), new java.security.SecureRandom()); SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sc, new NoopHostnameVerifier()); Registryregistry = RegistryBuilder. create().register("https", socketFactory).build(); HttpClientConnectionManager ccm = new BasicHttpClientConnectionManager(registry); builder.setConnectionManager(ccm); return builder.build(); } private TrustManager[] getTrustingManager(){ TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { @Override public java.security.cert.X509Certificate[] getAcceptedIssuers(){ return null; } @Override public void checkClientTrusted( X509Certificate[] certs, String authType ){ // Do nothing } @Override public void checkServerTrusted( X509Certificate[] certs, String authType ){ // Do nothing } } }; return trustAllCerts; }
refs :
사용한 코드 참고 사이트
Hostname in cerificate didn't match?
댓글
댓글 쓰기