๋ฐ์ํ
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
๊ฐ๋ ๋ฎ์ ์๋ฐ๋ฒ์ ์ ์ฌ์ฉํ๋ค๋ณด๋ฉด apiํธ์ถ ํ ๋ ssl ์ธ์ฆ์ ์๋ฌ๊ฐ ํฐ์ง๋ค.
์ค์ ์๋น์ค์์๋ ์ ๋ ์ฌ์ฉํ๋๊ฒ์ด ๋น์ถ๊ณ , ํ ์คํธ/์์ ํ์ธ์ฉ์ผ๋ก๋ง ์ฌ์ฉํ ์ ์๋๋ก
ssl ์ธ์ฆ ์๋ฌ๋ฅผ ๋ฌด์ํ๋ ์ฝ๋๋ค.
SSLBypassExample.java
import javax.net.ssl.*;
import java.security.cert.X509Certificate;
public class SSLBypassExample {
public static void disableSSLVerification() throws Exception {
TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() { return null; }
public void checkClientTrusted(X509Certificate[] certs, String authType) { }
public void checkServerTrusted(X509Certificate[] certs, String authType) { }
}
};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HostnameVerifier allHostsValid = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
}
}
ํด๋น ํด๋์ค๋ฅผ apiํธ์ถ ์ ์ ๋ค์์ฒ๋ผ ํธ์ถํ๋ฉด ๋๋ค.
SSLBypassExample.disableSSLVerification();
๋ฐ์ํ