首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决X509TrustManager在安卓应用程序中的不安全实现

如何解决X509TrustManager在安卓应用程序中的不安全实现
EN

Stack Overflow用户
提问于 2016-02-20 23:53:54
回答 5查看 28.8K关注 0票数 27

谷歌建议我在我的安卓应用程序中有一个不安全的界面X509TrustManager实现,需要修改我的代码如下:

若要正确处理SSL证书验证,请更改自定义X509TrustManager接口的X509TrustManager方法中的代码,以便在服务器提供的证书不符合您的期望时引发CertificateException或IllegalArgumentException。对于技术问题,您可以张贴到Stack溢出,并使用标签“android”和“TrustManager”。

如何修改以下代码以解决上述问题?

代码语言:javascript
复制
public EasySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
    super(truststore);

    TrustManager tm = new X509TrustManager()  {
        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
        }

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

        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }
    };

    mContext.init(null, new TrustManager[] { tm }, null);
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-02-23 11:15:54

我使用以下代码解决了这个问题:

代码语言:javascript
复制
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                try {
                    chain[0].checkValidity();
                } catch (Exception e) {
                    throw new CertificateException("Certificate not valid or trusted.");
                }
            }
票数 29
EN

Stack Overflow用户

发布于 2016-07-14 16:01:20

如果您从正在使用的外部库中遇到这种情况,请检查appache library from是否是造成这种情况的原因。

对我来说,apache库导致了错误:我使用的是不推荐的类- MultipartEntity。这个类使用SSLContextBuilder,它使用TrustManagerDelegate。TrustManagerDelegate实现了X509TrustManager,在将应用程序上传到google商店时,这会导致“TrustManager的不安全实现”错误。

解决方案是:使用MultipartEntity类代替不推荐的MultipartEntityBuilder类。

例如:

代码语言:javascript
复制
MultipartEntity httpMultipart = new MultipartEntity();
String contentType = httpMultipart.getContentType().getValue();

将改为:

代码语言:javascript
复制
MultipartEntityBuilder httpMultipart = new MultipartEntityBuilder();
String contentType = httpMultipart.build().getContentType().getValue();
票数 1
EN

Stack Overflow用户

发布于 2020-07-29 07:14:56

添加升级版的OKttps为我在Android 10中崩溃

代码语言:javascript
复制
implementation 'com.squareup.okhttp3:okhttp:4.8.0'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35530558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档