问题标签 [trustmanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1644 浏览

android - 使用 X509TrustManagerExtensions checkServerTrusted 固定公钥

用于 HTTPS TLS 连接的公钥固定。

低于 17 的 Android API 存在一个问题,它会在公钥固定的情况下启用 MITM(中间人)攻击。这已在下面的链接中解释。

https://www.cigital.com/blog/ineffective-certificate-pinning-implementations/

因此,在低于 17 的 Android 最小 sdk 中,即低于 Android 版本 4.2,我们需要使用只有服务器根证书的 Android 密钥库初始化X509TrustManager (而不是默认密钥库;它会在设备中安装所有证书)。这有助于在执行公钥固定之前清理从服务器接收到的叶证书。

从 Android API 17 开始,Android 引入了X509TrustManagerExtensions,它在操作系统级别执行此根清理。

https://developer.android.com/reference/android/net/http/X509TrustManagerExtensions.html

我的问题:

如果有人能提供一个示例,说明如何实现 X509TrustManagerExtensions 提供的以下方法以进行根目录清理,我将很高兴。

我对以下内容感到困惑。

  1. host; 它应该是域 URL 吗?有 https 还是没有?还是应该是完整的 url(域 + 相对路径)

  2. 如何创建一个瞬间X509TrustManagerExtensions?X509TrustManagerExtensions 的构造函数X509TrustManager作为输入。我们是否使用 android 默认密钥库创建此 X509TrustManager?

代码片段(不工作):

例外: 未找到证书路径的信任锚

可能的安全风险: 使用KeyStore.getDefaultType()

任何帮助将不胜感激。

0 投票
1 回答
8804 浏览

ssl - java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。NETWORK

嗨,当我从改造中调用一项 API 服务时,我遇到了这个错误,我搜索了很多并找到了类似的答案

使用 setSSLFactoryForClient 方法后,它工作正常,但我不明白出了什么问题,这个方法是什么我知道问题与 SSL 证书身份验证有关,但任何人都可以简要解释一下吗?

0 投票
1 回答
528 浏览

java - 以编程方式为 Tomcat 连接器设置 TrustManager

在我的项目使用 1.4.0.M3 版本的 Spring Boot 前几周,它使用了 tomcat-embedded-core-8.0.33。在这里,我能够使用以下代码创建多连接器:

问题是从 1.4.0.RELEASE 版本开始,Spring Boot 使用 8.5.* Tomcat,其中 .getEndpoint() 方法被声明为受保护。

如何以编程方式为特定连接器或协议处理程序安装 TrustManager?

0 投票
4 回答
14933 浏览

android - 如何使用未知 CA 自签名的证书让 Android Volley 执行 HTTPS 请求?

在提出问题之前,我找到了一些链接,我一个一个地检查了它们,但没有一个可以给我一个解决方案:

到目前为止,我发现的唯一链接是这个链接,它提供了两种方法:使用 Android Volley 发出 HTTPS 请求

  • 1º 指示将一些类导入您的应用程序,而实际上,必须导入另一个类,并且这些类正在使用“apache.org”中已弃用的库
  • 2º NUKE 所有 SSL 证书的示例(非常糟糕的主意......)


我也找到了这个博客,里面有很多解释,但最后,我意识到这些示例使用了“apache.org”中已弃用的库,而且博客本身没有 Android Volley 的内容。 https://nelenkov.blogspot.mx/2011/12/using-custom-certificate-trust-store-on.html


还有来自 Android 的这个链接和“未知证书颁发机构”部分的代码,它提供了一个关于解决方案的好主意,但代码本身在其结构中缺少一些东西(Android Studio 抱怨......):https:// developer.android.com/training/articles/security-ssl.html

但是链接中的这句话似乎是解决问题的核心概念。

“TrustManager 是系统用来验证来自服务器的证书,并且通过从具有一个或多个 CA 的 KeyStore 创建一个证书,这些将是该 TrustManager 信任的唯一 CA。给定新的 TrustManager,该示例初始化一个新的 SSLContext它提供了一个 SSLSocketFactory,您可以使用它来覆盖 HttpsURLConnection 中的默认 SSLSocketFactory。这样,连接将使用您的 CA 进行证书验证。”



现在,这是我的问题:我有一个使用自签名证书的网络服务器,并且我创建了一个基于其证书的“BKS 信任库”。我已将 de BKS 信任库导入我的 Android 应用程序,现在,我的应用程序上有以下代码(我只是在这里发布 MainActivity,我想这是迄今为止唯一与该主题相关的类):

关于构造函数类,我冒昧地复制了代码,并就我对每个部分的理解发表了一些评论:

在此之后,在另一个类方法中,我有 RequestQueue,使用我在类构造函数上配置的 HttpClientStack:

当我运行我的应用程序并提供 WebServer 所需的用户和密码时,我可以在 Android Studio 的 Android Monitor 中看到以下消息:

09-17 21:57:13.842 20617-20617/com.domain.myapp D/Error.Response: com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: 信任锚找不到证书路径。

在所有这些解释之后,我有以下问题:

  • 为了使 Android 接受来自我在类的构造函数中配置的自定义 TrustManager 的 CA 的 SSL 证书,还必须配置什么?

原谅我,但我是 Android 编程以及 Java 编程的初学者,所以也许,我犯了一个可怕的错误......

任何帮助将非常感激。

更新

我改进了类的构造函数,对语句进行了更好的分组,还使用了KeyManagerFactory,这在这个过程中似乎非常重要。开始:

反正我还是有问题。。

响应:com.android.volley.NoConnectionError:javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。

0 投票
0 回答
295 浏览

android - 是否可以在 Android 中使用/接受自签名证书而不是“Nuking”所有 SSL 证书来发出 HTTPS 请求?

以及如何使用 Android Volley 来实现这一点?有没有人有明确的代码,显示如何接受来自 Uknown CA 的证书?

拜托,我不是在寻找另一个例子,展示如何忽略自签名 SSL 证书。StackOverflow 充满了它,实际上,接受任何 SSL 证书都不是一个好主意。你只想接受一个特定的。时期。

0 投票
3 回答
6251 浏览

java - 以编程方式重新加载 Java TrustStore

我已经阅读了很多关于这个主题的内容,这似乎是不可能的,但只是为了确保我想要更多的意见。

用例:以编程方式与一个或多个 https 服务连接的 Web 应用程序,这些服务是动态的,并且证书会经常更新。

应用程序应该做的是使用新证书更新 TrustStore 并在不重新启动应用程序的情况下使用它们。重要的是,不应实施任何新代码来进行 https 连接(因此,它应该无缝集成)。

我已经尝试(没有运气)覆盖默认的 Java TrustManager,任何帮助将不胜感激。

编辑:我已经尝试了评论/答案中提出的一些解决方案,但之后我仍然需要重新启动我的 tomcat

0 投票
0 回答
688 浏览

android - 由于 X509TrustManager 的不安全实施,应用程序被 Google Play 商店拒绝

从 Google Play 商店收到此警告: 安全警报 您的应用正在使用带有 Apache HTTP 客户端的 X509TrustManager 接口的不安全实现,从而导致安全漏洞。请参阅此 Google 帮助中心文章了解详细信息,包括修复漏洞的截止日期。易受攻击的类:com.flurry.android.n 影响 APK 版本 1。

请如果有人知道如何解决这个问题...告诉我

0 投票
1 回答
5675 浏览

android - Android中不安全的主机名验证器

在 3 月 1 日之后,当我将我的应用程序上传到 beta 组时,我收到了来自 Google 的特定邮件,其中引用:

此信息适用于使用不安全实现 HostnameVerifier 接口的应用程序的开发人员,该接口在使用 setDefaultHostnameVerifier API 与远程主机建立 HTTPS 连接时接受所有主机名

在网上搜索后,我发现了一些链接,但大多数情况下他们建议使用第三方库,但在我的整个应用程序中,我已经为 restcalls 完成了简单的 HTTPS 请求。我用于休息调用的代码是:

谁能知道可以编写什么类型的代码才能从 Google 的警告中恢复过来。但我不想使用像 Volley 这样的第三方库。

0 投票
0 回答
613 浏览

java - 爪哇安卓。谷歌播放不安全 TrustManager 的安全警报

我想在谷歌商店升级我的应用程序,但我遇到了安全警报问题。这是一封邮件:

我们拒绝了 ****,包名称为 *****,因为它违反了我们的恶意行为或用户数据政策。如果您提交了更新,您的应用的旧版本仍可在 Google Play 上使用。

这是我实现 TrustManager 的代码:

0 投票
2 回答
1483 浏览

android - 您在哪里可以找到 android 中信任管理器的默认实现?

我需要信任管理器默认实现的源代码