ホームページ >Java >&#&チュートリアル >Android で HTTPS 接続を確立するときに信頼できないサーバー証明書をバイパスする方法
Android での HTTPS 接続の確立
Android で HTTPS 接続を確立しようとすると、開発者は信頼できないサーバー証明書に関連する例外が発生する可能性があります。これに対処するには、サーバー証明書を受け入れることを検討してください。
すべてのホストを信頼する
証明書の検証をバイパスする 1 つの方法は、すべてのホストを信頼し、チェックを効果的に無効にすることです。これは、カスタム HostnameVerifier と 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) {} } };
次に、SSLContext を初期化し、トラスト マネージャーとホスト名検証ツールを適用します。
SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, trustAllCerts, new SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
使用例
HTTP 接続を作成するときは、プロトコルを確認し、次の場合は前述の設定を適用します。 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(); }
以上がAndroid で HTTPS 接続を確立するときに信頼できないサーバー証明書をバイパスする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。