首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSL android证书颁发

SSL android证书颁发
EN

Stack Overflow用户
提问于 2017-06-22 18:18:52
回答 1查看 69关注 0票数 1

我正在使用https的android套接字,所以我需要确保连接安全。因此,我使用这个证书-

代码语言:javascript
复制
  private final TrustManager[] trustAllCerts= new TrustManager[] { new X509TrustManager() {
    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
        return new java.security.cert.X509Certificate[] {};
    }
    public void checkClientTrusted(X509Certificate[] chain,
                                   String authType) throws CertificateException {
    }
    public void checkServerTrusted(X509Certificate[] chain,
                                   String authType) throws CertificateException {
    }
} };

现在一切正常,连接也建立了,但是我不理解或者我不知道使用这种类型的证书是否安全?

我该不该用这个?

EN

回答 1

Stack Overflow用户

发布于 2017-06-22 19:04:51

不,这是易受Man-in-the-middle攻击的

您使用的是https,所以数据在传输时是加密的,这很好。但是没有检查另一端是不是你所期望的,这是不好的。

上面的自定义TrustManager不进行任何检查,并隐式地信任所有内容。在代码中,它甚至被称为trustAllCerts,这是您显式地做而不是想要做的。您需要检查证书链,看看它是否来自您信任的来源。

问题是攻击者可以通过在您和您的端点之间放置一个代理来拦截您的https流量。拦截代理可以提供它自己的证书,因此可以解密流量并对其执行任何它想要的操作。它还可以设置与端点的https连接,并读取从那里获得的数据。因此,攻击者可以读取您发送的内容,可以读取您将接收的内容,还可以更改您发送和接收的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44696583

复制
相关文章

相似问题

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