如何修复 Android 应用中 X509TrustManager 的不安全实现

2024-02-10

Google 通知我的 Android 应用程序中的 X509TrustManager 接口实现不安全,需要按如下方式更改代码:

要正确处理 SSL 证书验证,请更改中的代码 自定义 X509TrustManager 接口的 checkServerTrusted 方法 每当发生时引发CertificateException或IllegalArgumentException 服务器提供的证书不符合您的要求 期望。对于技术问题,您可以发布到 Stack Overflow 并使用标签“android-security”和“TrustManager”。

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

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);
}

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

public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                try {
                    chain[0].checkValidity();
                } catch (Exception e) {
                    throw new CertificateException("Certificate not valid or trusted.");
                }
            }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修复 Android 应用中 X509TrustManager 的不安全实现 的相关文章

随机推荐

  • 创建空 S4 对象的向量

    这可能是微不足道的 但我没有在网上找到任何东西 是否可以在 R 中创建空 S4 对象的向量 就像是 s4Vec lt rep emptyS4Object 10 Thanks 像这样 s4Vec lt lapply rep yourClass
  • 在 Eclipse 中,为什么“自动构建”被神秘地禁用?

    我正在运行 Eclipse Europa 3 3 我始终将 项目 菜单下的 自动构建 设置保留为打开状态 偶尔我的代码无法编译 我对它感到困惑 然后拉下 项目 菜单 你瞧 它不再设置了 是什么赋予了 这是一个错误 还是我正在做的其他事情可能
  • 用 python 可视化二维随机游走

    我正在尝试在二维中进行随机游走 并绘制二维游走 我已经能够步行了 但情节并不完全是我想要的 可以用 python 现场观看步行吗 或者只是为每个点添加一个标签 以便您知道哪个点是第一个 哪个点是第二个等等 import numpy as n
  • 单击外部时隐藏下拉菜单

    我有一个下拉菜单 里面有复选框 我想当用户点击外部时关闭下拉菜单 我的代码是
  • 解析“href”标签中包含特定单词的所有链接[重复]

    这个问题在这里已经有答案了 可能的重复 获取 A 元素的 href 属性 https stackoverflow com questions 3820666 grabbing the href attribute of an a eleme
  • 如何使用 C# 或批处理文件更改默认浏览器

    标题说明了一切 默认浏览器保存为 Windows 注册表项中的一个条目 这些值是基于协议保存的 如下所示 HKEY CLASSES ROOT 协议 shell open command 其中协议可以是http https等 关于如何在C 内
  • 如何确定 jekyll 是在本地运行还是在生产站点运行?

    jekyll 中有一个名为 production url 的配置参数 我找不到任何有关如何使用它的信息 理想情况下 我希望能够在运行时生成带有本地网址的永久链接serve运行时的参数和生产 urlbuild param 我怎么能这么做呢 当
  • 关闭 vim 中特定模式的高亮显示

    在 vim 中 我正在编辑文件类型 markdown 的文件 但其中包含乳胶数学表达式 例如 x i Vim 的 Markdown 语法高亮认为模式 字母 下划线 字母 是一个错误 并以亮红色突出显示此类模式中的下划线 我想通过在 vimr
  • 如何从 JSON 文件中的每个值中删除空格和换行符?

    我有一个JSON文件具有以下结构 name someKey n n some Value someKey another value anotherName anArray key value n n anotherKey value
  • 网络:使用 igraph 从事件节点数据创建图形对象

    我想从事件注释数据为 igraph 创建一个网络对象 例如 我有一个数据如下所示 Event Person 1 Obama 1 Putin 1 Abe 1 Cameron 2 Putin 2 Xi 2 Merkel 3 Obama 3 Ab
  • 从 Objective C 中的 Swift 类继承

    我在 Xcode 7 项目中成功混合和匹配 Obj C 和 Swift 然而 我似乎无法弄清楚如何在 Objective C 类中从 Swift 类继承 是的 我知道如何将该 Swift 类声明为 objc以提高可见性 在本例中 所需的 S
  • iPhone GPS 在后台暂停后不会恢复

    我的应用程序需要在后台跟踪用户位置变化 并且只要用户四处移动就可以正常工作 当用户停止并且CLLocationManager10 20 分钟左右后暂停 本通知表明 void locationManagerDidPauseLocationUp
  • 使用 stat_summary_hex 以离散色标显示最常见的值

    我有一个包含 10k 行和 3 列的数据框 xpos ypos 和簇 簇是从 0 到 9 的数字 http pastebin com NyQw29tb http pastebin com NyQw29tb 我想显示一个六边形图 其中每个六边
  • @Async不会通过@ControllerAdvice调用全局异常

    我有一个带有 Async 方法的服务类 如果它调用方法抛出任何异常 那么 ControllerAdvice 将不会调用全局异常处理 但对于其他课程和服务 它会正确拨打建议并发送电子邮件 Service public class FileSc
  • 如何在 CentOS 中向 PHP 5 添加curl 支持

    如何在 CentOS 中向 PHP 5 添加curl 支持 安装curl和curl devel后 我需要做哪些事情才能在PHP 5中设置curl 有同样的问题 安装 php common 对我有用 yum install php commo
  • 如何在 Internet 上托管 wcf 服务?

    这可能是一个基本的网络问题 但我对这个东西很陌生 只是不知道答案 我写了一个wcf服务和客户端 当我将计算机的网络 IP 地址作为端点地址并从同一台计算机运行客户端和服务器时 我可以使用 http 绑定之一并使服务正常工作 现在 我希望能够
  • Python GUI (glade) 显示 shell 进程的输出

    我正在编写一个 python 应用程序 它使用 subprocess Popen 对象运行多个子进程 我有一个 Glade GUI 想要在 GUI 中实时显示这些命令的输出 在 subprocess Popen 中运行 谁能建议一种方法来做
  • 使用await时线程返回线程池

    但是 使用 ASP NET Web Api 如果您的请求来自某一 线程 然后您等待某个函数并调用ConfigureAwait false 这可能会让你在不同的线程上 返回 ApiController 函数的最终结果 其实 只是做一个awai
  • 如果输入和复选框不为空,则启用提交按钮

    下面我试图确保在允许用户提交之前我的复选框和输入都已填充 它忽略我对复选框的检查 并仅在填写字段后打开提交 我究竟做错了什么 first last pass bind keyup function if allFilled register
  • 如何修复 Android 应用中 X509TrustManager 的不安全实现

    Google 通知我的 Android 应用程序中的 X509TrustManager 接口实现不安全 需要按如下方式更改代码 要正确处理 SSL 证书验证 请更改中的代码 自定义 X509TrustManager 接口的 checkSer