> Java > java지도 시간 > Android에서 HTTPS 서버 인증서 확인을 우회하는 방법은 무엇입니까?

Android에서 HTTPS 서버 인증서 확인을 우회하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-09 19:32:11
원래의
1075명이 탐색했습니다.

How to Bypass HTTPS Server Certificate Verification in Android?

Https 연결 Android: 네트워크 요청에 대한 서버 인증서 무시

Android에서 HTTPS 연결을 설정할 때 서버 인증서 보안을 고려하는 것이 중요합니다. 그러나 특정 상황에서는 서버 인증서를 확인하지 않고 연결을 설정해야 할 수도 있습니다. 이 문서에서는 Android에서 HTTP 연결에 대한 서버 인증서 확인을 우회하는 방법을 설명합니다.

해결책: 모든 서버 신뢰

서버 인증서를 무시하고 모든 연결을 신뢰하려면 다음을 구현할 수 있습니다. 사용자 정의 HostnameVerifier를 만들고 모든 인증서의 유효성을 검사하는 신뢰 관리자를 설치합니다. 코드는 다음과 같습니다.

HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
  public boolean verify(String hostname, SSLSession session) {
    return true;
  }
};

private static void trustAllHosts() {
  TrustManager[] trustAllCerts = new TrustManager[] {
    new X509TrustManager() {
      public java.security.cert.X509Certificate[] getAcceptedIssuers() {
        return new java.security.cert.X509Certificate[] {};
      }

      public void checkClientTrusted(X509Certificate[] chain, String authType)
          throws CertificateException {}

      public void checkServerTrusted(X509Certificate[] chain, String authType)
          throws CertificateException {}
    }
  };

  SSLContext sc = SSLContext.getInstance("TLS");
  sc.init(null, trustAllCerts, new java.security.SecureRandom());
  HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
로그인 후 복사

연결 설정

모든 호스트 신뢰 방법이 구현되면 다음 코드를 사용하여 인증서 확인을 무시하고 HTTP 연결을 설정할 수 있습니다. :

HttpURLConnection http = null;
if (url.getProtocol().toLowerCase().equals("https")) {
  trustAllHosts();
  HttpsURLConnection https = (HttpsURLConnection) url.openConnection();
  https.setHostnameVerifier(DO_NOT_VERIFY);
  http = https;
} else {
  http = (HttpURLConnection) url.openConnection();
}
로그인 후 복사

이렇게 하면 서버 인증서 유효성 검사에 의존하지 않고 HTTPS 연결을 만들 수 있습니다. 특정 시나리오에서는 필요합니다. 이 접근 방식은 보안이 주요 관심사가 아닌 개발 또는 제어 환경에서만 사용해야 한다는 점에 유의하는 것이 중요합니다.

위 내용은 Android에서 HTTPS 서버 인증서 확인을 우회하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿