Android 上的 HTTPS 连接建立
尝试在 Android 上建立 HTTPS 连接时,开发者可能会遇到与不受信任的服务器证书相关的异常。为了解决这个问题,可以考虑接受服务器证书。
信任所有主机
绕过证书验证的一种方法是信任所有主机,从而有效地禁用检查。这可以通过实现自定义 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中文网其他相关文章!