首页 >Java >java教程 >如何解决 Android 上的'SSL 异常:不受信任的服务器证书”错误?

如何解决 Android 上的'SSL 异常:不受信任的服务器证书”错误?

Patricia Arquette
Patricia Arquette原创
2024-12-27 15:06:11912浏览

How Can I Resolve

了解 Android 上的 HTTPS 连接问题

尝试在 Android 上建立 HTTPS 连接时,您可能会遇到“SSL 异常:不受信任”服务器证书”错误。使用自签名证书或不受信任的证书时通常会遇到此错误。

绕过证书验证

解决此问题的一种方法是禁用证书验证。然而,这种方法允许连接到不受信任的服务器,从而损害了安全性。 《Java 开发者年鉴》中的以下代码片段演示了如何信任所有主机并绕过证书检查:

// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[] {
    new X509TrustManager() {
        @Override
        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
            return new java.security.cert.X509Certificate[] {};
        }

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

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

// Install the all-trusting trust manager
try {
    SSLContext sc = SSLContext.getInstance("TLS");
    sc.init(null, trustAllCerts, new java.security.SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
    e.printStackTrace();
}

基于协议的条件处理

或者,您可以根据协议有条件地处理连接,如以下代码片段所示:

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

By按照这些方法,您可以建立 HTTPS 连接并绕过证书验证,但需要注意的是,这会损害安全性,应谨慎使用。

以上是如何解决 Android 上的'SSL 异常:不受信任的服务器证书”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn