Rumah > Java > javaTutorial > Bagaimana untuk Memintas Sijil Pelayan Tidak Dipercayai Apabila Mewujudkan Sambungan HTTPS pada Android?

Bagaimana untuk Memintas Sijil Pelayan Tidak Dipercayai Apabila Mewujudkan Sambungan HTTPS pada Android?

DDD
Lepaskan: 2024-12-10 16:25:12
asal
904 orang telah melayarinya

How to Bypass Untrusted Server Certificates When Establishing HTTPS Connections on Android?

Penubuhan Sambungan HTTPS pada Android

Apabila cuba mewujudkan sambungan HTTPS pada Android, pembangun mungkin menghadapi pengecualian yang berkaitan dengan sijil pelayan yang tidak dipercayai . Untuk menangani perkara ini, seseorang boleh mempertimbangkan untuk menerima sijil pelayan.

Percayai Semua Hos

Satu pendekatan untuk memintas pengesahan sijil ialah mempercayai semua hos, melumpuhkan pemeriksaan dengan berkesan. Ini boleh dicapai dengan melaksanakan HostnameVerifier tersuai dan TrustManager.

// Hostname verifier that always returns true
HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
    @Override
    public boolean verify(String hostname, SSLSession session) {
        return true;
    }
};

// Trust manager that accepts all certificates
TrustManager[] trustAllCerts = new TrustManager[]{
    new X509TrustManager() {
        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return new X509Certificate[]{};
        }

        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType) {}

        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType) {}
    }
};
Salin selepas log masuk

Seterusnya, mulakan SSLContext dan gunakan pengurus amanah dan pengesah nama hos.

SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
Salin selepas log masuk

Contoh Penggunaan

Apabila membuat sambungan HTTP, semak protokol dan gunakan konfigurasi yang dinyatakan di atas jika ia HTTPS.

HttpURLConnection http = null;
String url = "https://example.com";

if (url.toLowerCase().equals("https")) {
    trustAllHosts();
    HttpsURLConnection https = (HttpsURLConnection) url.openConnection();
    https.setHostnameVerifier(DO_NOT_VERIFY);
    http = https;
} else {
    http = (HttpURLConnection) url.openConnection();
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Memintas Sijil Pelayan Tidak Dipercayai Apabila Mewujudkan Sambungan HTTPS pada Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan