Rumah >Java >javaTutorial >Bagaimana untuk memintas Pengesahan Sijil Pelayan HTTPS dalam Android?

Bagaimana untuk memintas Pengesahan Sijil Pelayan HTTPS dalam Android?

DDD
DDDasal
2024-12-09 19:32:111018semak imbas

How to Bypass HTTPS Server Certificate Verification in Android?

Https Connection Android: Mengabaikan Sijil Pelayan untuk Permintaan Rangkaian

Apabila mewujudkan sambungan HTTPS dalam Android, adalah penting untuk mempertimbangkan keselamatan sijil pelayan. Walau bagaimanapun, dalam situasi tertentu, mungkin perlu untuk mewujudkan sambungan tanpa mengesahkan sijil pelayan. Artikel ini membincangkan cara memintas pengesahan sijil pelayan untuk sambungan HTTP dalam Android.

Penyelesaian: Mempercayai Semua Pelayan

Untuk mengabaikan sijil pelayan dan mempercayai semua sambungan, anda boleh melaksanakan HostnameVerifier tersuai dan pasang pengurus amanah yang mengesahkan semua sijil. Berikut ialah kodnya:

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());
}

Penubuhan Sambungan

Setelah kepercayaan semua kaedah hos dilaksanakan, anda boleh mewujudkan sambungan HTTP sambil mengabaikan pengesahan sijil menggunakan kod berikut :

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();
}

Ini akan membolehkan anda membuat sambungan HTTPS tanpa bergantung pada pengesahan sijil pelayan, yang mungkin diperlukan dalam senario tertentu. Adalah penting untuk ambil perhatian bahawa pendekatan ini hanya boleh digunakan dalam pembangunan atau persekitaran terkawal di mana keselamatan bukan kebimbangan utama.

Atas ialah kandungan terperinci Bagaimana untuk memintas Pengesahan Sijil Pelayan HTTPS dalam Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn