问题标签 [x509trustmanager]

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 投票
3 回答
35578 浏览

java - 在 Java 中针对 CA 验证 X.509 证书

可以说我有这样的东西(客户端代码):

这段代码功能齐全,但我真的不知道如何根据我在 pem 文件中可用的一个具体 CA 证书来验证服务器的证书。

所有证书都由我的自签名 CA 签名,这是我需要验证的 CA(仅针对这个)。

每一个答案都值得赞赏。

编辑:

作为对jglouie的回应(非常感谢你——不能投票赞成你的答案)。

我建立了解决方案:

0 投票
0 回答
501 浏览

java - Google Play 警告和“X509TrustManager 的不安全实施”

我们收到了有关“您正在使用不安全的 X509TrustManagfer 实现”的邮件。为了解决这个问题,我们应用了来自http://transoceanic.blogspot.in/2011/11/android-import-ssl-certificate-and-use.html的解决方案

在这里,我们生成了新的 BKS 密钥库并传递了这个密钥库 SSLSocketFactory。该工厂负责验证服务器证书。我们已经存在密钥库,但它不是 .BKS 格式。这就是为什么我们为专门的 HTTPS 调用创建了一个新的。请查看我的以下代码:

您能否检查并确认使用此解决方案我们的应用程序是安全的?

如果您有任何其他最佳解决方案,请告诉我们。

0 投票
1 回答
2708 浏览

android - Your app is using an unsafe implementation of the X509TrustManager interface with an Apache HTTP client

I was having this below code in my app -

But, Google play store rejected my app for this. Specifying the reason -

Your app is using an unsafe implementation of the X509TrustManager interface with an Apache HTTP client, resulting in a security vulnerability. Please see this Google Help Center article for details, including the deadline for fixing the vulnerability.

So, in order to get rid off this. I tried downloading certificate from the website, and tried using it through this below code, instead of the above one -

and called it as -

But, now getting exception -

App Gradle File

I am unsure, may be the culprit is dependencies in my gradle file or the lower versions.

Can anyone please tell, what I am doing wrong here? Am I missing anything?

I found a lot of similar posted questions, but still unanswered yet, unluckily.

0 投票
1 回答
3927 浏览

java - 在 X509TrustManager 中,方法“getAcceptedIssuers”用于什么?

X509TrustManager 中有三个方法。1 checkClientTrusted :检查客户端的证书是否可信。2 checkServerTrusted:检查服务器的证书是否可信。那么 getAcceptedIssuers 方法有什么用呢?它将在哪里调用?

0 投票
2 回答
1581 浏览

android - 无法处理自定义 X509TrustManager 中引发的 CertificateException

我的 Xamarin.Android 应用程序向在 https 上运行的 Web 服务发出请求。证书可能是自签名的,所以我需要自己进行证书检查。我配置了自己的 TrustManager。但是根据我的发现,如果证书不受信任,该方法CheckServerTrusted应该抛出一个。CertificateException如果我这样做,那么我的应用程序就会崩溃。CertificateException不在任何地方处理。

CustomX509TrustManager尽可能简单:

在 connection.ConnectAsync() 中,远程服务器被联系并在 CustomX509TrustManager.CheckServerTrusted 中检查证书。这将引发 CertificateException。但是我在调​​用方法中的 try/catch 中没有捕获到该异常。应用程序因此堆栈跟踪而崩溃:

我尝试了几件事,结果很奇怪。

如果我使用connection.Connect()而不是ConnectAsync,则catch运行该块,但该finally块不运行,之后的代码也不再运行。使用ConnectAsync,该catch块也不会运行。

如果我得到默认的 TrustManager 并SSLSocketFactory像我一样设置它,那么它就可以工作。证书被拒绝并且可以捕获异常。所以我不认为我只是抓住了错误的线索。

如果我使用自己的 TrustManager,但我将调用委托给CheckServerTrusted默认的 TrustManager,那么它会失败,就像我自己抛出异常一样。

所以我认为我在我的CustomX509TrustManager或我如何将它传递给SSLSocketFactory.

不幸的是,当您搜索自定义 TrustMangagers 时,大多数人只想忽略所有证书错误。这对我有用,如果我确实检查了证书并想要拒绝它,就会出现问题。

0 投票
0 回答
331 浏览

x509certificate - 实现自定义 X509TrustManager 以验证证书或提供的指纹的最佳方式

Java 安全性相当新,我正在尝试编写自定义 X509TrustManager 来验证当我连接到服务器时,它要么具有受信任的证书链(来自我配置的信任库),要么,如果没有,那么它提供的证书有自定义信任管理器拥有的 SHA256 指纹之一(我也提供了)。我认为编码这将是一个简单的灌篮(如JSSE ref所暗示的)) - 委托给默认信任管理器,捕获指示“证书链不受信任”之类的特定异常,检查指纹是否匹配,如果匹配,则忽略异常,否则传播它。显然,没有很好的“CertificateUntrustedException”。我得到的是以下异常。是否没有供应商独立的干净方法来解决此问题(或检查受信任证书或外部提供的指纹的更高级别问题)。

谢谢!

sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

在 sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387) 在 sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) 在 sun.security.validator.Validator.validate(Validator.java:260 )在 sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) 在 sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229) 在 sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java: 124) 在 com.company.TestConnection$LocalExtendedX509TrustManager.checkServerTrusted(TestConnection.java:116)

0 投票
2 回答
3538 浏览

java - Android 7:找不到证书路径的信任锚

我有一个应用程序连接到本地 ip 网络中的服务器。此连接使用自定义证书进行 TLS 加密。按照这一方面的指南,我使它在所有 android 版本下工作,直到 android 7。遗憾的是,自从 Android 7 它不再工作。请问有人知道为什么这不再起作用了吗?

我找到了这篇文章并包含了一个带有以下代码的网络配置文件(我知道这可能不安全,但首先这必须工作......):

可悲的是它仍然无法正常工作。我还在清单中将其添加为android:networkSecurityConfig="@xml/network_security_config".

我得到的例外(仅限Android 7+)!

这是初始化我的 SSL 上下文的代码

0 投票
0 回答
183 浏览

java - SSLHandShake checkServerTrusted 在 Android 7 Nougat 中调用了 3 次

TrustManager 的 checkServerTrusted 在 1 个请求中被调用 3 次的原因可能是什么?如果 Android 中的第一次 startHandShake 失败,是否会“重新发送”客户端 Hello 消息?

更新:当我使用特定密码时(在 Android 5 中,握手已完成), checkServerTrusted 只调用一次。

0 投票
1 回答
631 浏览

java - 在 Java 中恢复 SSL X509TrustManager

我有以下代码有条件地(基于 a boolean)禁用 SSL 证书检查。

但是,如果我设置booleanfalse并重新运行我的代码,SSL 检查似乎仍然被禁用(当它应该重新启用时)。

那么,与此相反的逻辑是什么,从而恢复了检查呢?

0 投票
0 回答
30 浏览

java - Rest Service 中的 Android 私有证书

我的应用程序适用于许多具有不同证书的 Restservices。我打开一个HttpsURLConnection,它工作正常。

但是现在 3 个服务点有一个私有根 CA,所以我在我的应用程序中获得了一个证书路径未找到错误的信任锚。

如何让 App 自动从该服务点获取证书?

我不想创建一个忽略 SSL 错误的 Trustmanager。