ホームページ >Java >&#&チュートリアル >Android で HTTPS 接続を確立するときに信頼できないサーバー証明書をバイパスする方法

Android で HTTPS 接続を確立するときに信頼できないサーバー証明書をバイパスする方法

DDD
DDDオリジナル
2024-12-10 16:25:12905ブラウズ

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

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。