"java.security.cert.CertificateException: No subject Alternative names presents" 오류 수정
HTTPS를 사용하여 웹 서비스에 액세스할 때 Java 클라이언트에서 "java.security.cert.CertificateException: 주체 대체 이름이 없습니다." 오류가 발생하면 인증서의 주체 이름과 호스트 주소가 일치하지 않음을 나타냅니다.
이 문제를 해결하려면 다음 단계를 따르세요.
그러나 이 방법이 항상 그렇지 않을 수도 있습니다. 서버 인증서를 제어할 수 없는 경우 가능합니다.
대체 솔루션은 HTTPS 검사를 비활성화하는 것입니다. 이 접근 방식에는 모든 인증서를 허용하는 사용자 지정 신뢰 관리자 및 호스트 이름 확인 프로그램을 만드는 작업이 포함됩니다. "ISomeService" 클래스에 다음 코드를 추가합니다.
static { disableSslVerification(); } private static void disableSslVerification() { // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { } public void checkServerTrusted(X509Certificate[] certs, String authType) { } } }; // Install the all-trusting trust manager SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); // Create all-trusting host name verifier HostnameVerifier allHostsValid = new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; } }; // Install the all-trusting host verifier HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); }
보안 문제로 인해 프로덕션 환경에서는 HTTPS 검사를 비활성화하는 것이 권장되지 않습니다.
위 내용은 HTTPS를 통해 웹 서비스에 액세스할 때 'java.security.cert.CertificateException: 주체 대체 이름이 없습니다.' 오류를 수정하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!