栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SSLHandshakeException找不到证书路径的信任锚Android HTTPS

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSLHandshakeException找不到证书路径的信任锚Android HTTPS

更新:
-我从没做过这方面的专家,以下内容仅是一种解决方法,可能并不安全,请您自担风险-这篇文章已有3年以上历史,因此现在可能已过时(代码将无法编译),但您应该能够找到更新的方法或官方文档,其中指出某些部分已弃用或删除

感谢noloader向我指出校正方向。我使用以下方法解决了我的问题:

String keyStoreType = KeyStore.getDefaultType(); KeyStore keyStore = KeyStore.getInstance(keyStoreType); keyStore.load(null, null); keyStore.setCertificateEntry("ca", ca);// my question shows how to get 'ca'TrustManagerFactory tmf = TrustManagerFactory.getInstance(    TrustManagerFactory.getDefaultAlgorithm());// Initialise the TMF as you normally would, for example:tmf.init(ca);TrustManager[] trustManagers = tmf.getTrustManagers();final X509TrustManager origTrustmanager = (X509TrustManager)trustManagers[0];TrustManager[] wrappedTrustManagers = new TrustManager[]{   new X509TrustManager() {       public java.security.cert.X509Certificate[] getAcceptedIssuers() {          return origTrustmanager.getAcceptedIssuers();       }       public void checkClientTrusted(X509Certificate[] certs, String authType) {origTrustmanager.checkClientTrusted(certs, authType);       }       public void checkServerTrusted(X509Certificate[] certs, String authType) {try {    origTrustmanager.checkServerTrusted(certs, authType);} catch (CertificateExpiredException e) {}       }   }};SSLContext sc = SSLContext.getInstance("TLS");sc.init(null, wrappedTrustManagers, null);HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

在我的问题中提到的为该站点找到的3个证书中,对我有用的一个是 VeriSign 3类安全服务器CA-G3



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437641.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号