大佬教程收集整理的这篇文章主要介绍了改进HTTPS连接无法在Android中运行,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
D/Retrofit﹕ javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. at com.android.org.conscrypt.openSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:328)
private TrustManager[] getWrappedTrustManagers(TrustManager[] trustManagers) { final x509trustmanager originalTrustManager = (x509trustmanager) trustManagers[0]; return new TrustManager[]{ new x509trustmanager() { public X509Certificate[] getAcceptedIssuers() { return originalTrustManager.getAcceptedIssuers(); } public void checkClientTrusted(X509Certificate[] certs,String authTypE) { try { originalTrustManager.checkClientTrusted(certs,authTypE); } catch (CertificateException ignored) { } } public void checkServerTrusted(X509Certificate[] certs,String authTypE) { try { originalTrustManager.checkServerTrusted(certs,authTypE); } catch (CertificateException ignored) { } } } }; } private SSLSocketFactory getSSLSocketFactory() throws CertificateException,KeyStoreException,IOException,NoSuchAlgorithmException,Keymanagementexception { CertificateFactory cf = CertificateFactory.geTinstance("X.509"); InputStream caInput = getresources().openRawresource(R.raw.your_cert); // your certificate file Certificate ca = cf.generateCertificate(caInput); caInput.close(); KeyStore keyStore = KeyStore.geTinstance("BKS"); keyStore.load(null,null); keyStore.setCertificateEntry("ca",ca); String tmfalgorithm = TrustManagerFactory.getDefaultAlgorithm(); TrustManagerFactory tmf = TrustManagerFactory.geTinstance(tmfalgorithm); tmf.init(keyStorE); TrustManager[] wrappedTrustManagers = getWrappedTrustManagers(tmf.getTrustManagers()); SSLContext sslContext = SSLContext.geTinstance("TLS"); sslContext.init(null,wrappedTrustManagers,null); return sslContext.getSocketFactory(); }
然后,您可以在项目中设置OkhttpClient,如下所示:
okhttpClient.setSslSocketFactory(getSSLSocketFactory());
关于setHostnameVerifier,看起来你的问题链接中有一个解决方案.
希望这可以帮助!
以上是大佬教程为你收集整理的改进HTTPS连接无法在Android中运行全部内容,希望文章能够帮你解决改进HTTPS连接无法在Android中运行所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。