问题标签 [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.
java - 在 Java 中针对 CA 验证 X.509 证书
可以说我有这样的东西(客户端代码):
这段代码功能齐全,但我真的不知道如何根据我在 pem 文件中可用的一个具体 CA 证书来验证服务器的证书。
所有证书都由我的自签名 CA 签名,这是我需要验证的 CA(仅针对这个)。
每一个答案都值得赞赏。
编辑:
作为对jglouie的回应(非常感谢你——不能投票赞成你的答案)。
我建立了解决方案:
java - Google Play 警告和“X509TrustManager 的不安全实施”
我们收到了有关“您正在使用不安全的 X509TrustManagfer 实现”的邮件。为了解决这个问题,我们应用了来自http://transoceanic.blogspot.in/2011/11/android-import-ssl-certificate-and-use.html的解决方案
在这里,我们生成了新的 BKS 密钥库并传递了这个密钥库 SSLSocketFactory。该工厂负责验证服务器证书。我们已经存在密钥库,但它不是 .BKS 格式。这就是为什么我们为专门的 HTTPS 调用创建了一个新的。请查看我的以下代码:
您能否检查并确认使用此解决方案我们的应用程序是安全的?
如果您有任何其他最佳解决方案,请告诉我们。
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.
java - 在 X509TrustManager 中,方法“getAcceptedIssuers”用于什么?
X509TrustManager 中有三个方法。1 checkClientTrusted :检查客户端的证书是否可信。2 checkServerTrusted:检查服务器的证书是否可信。那么 getAcceptedIssuers 方法有什么用呢?它将在哪里调用?
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 时,大多数人只想忽略所有证书错误。这对我有用,如果我确实检查了证书并想要拒绝它,就会出现问题。
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)
java - Android 7:找不到证书路径的信任锚
我有一个应用程序连接到本地 ip 网络中的服务器。此连接使用自定义证书进行 TLS 加密。按照这一方面的指南,我使它在所有 android 版本下工作,直到 android 7。遗憾的是,自从 Android 7 它不再工作。请问有人知道为什么这不再起作用了吗?
我找到了这篇文章并包含了一个带有以下代码的网络配置文件(我知道这可能不安全,但首先这必须工作......):
可悲的是它仍然无法正常工作。我还在清单中将其添加为android:networkSecurityConfig="@xml/network_security_config"
.
我得到的例外(仅限Android 7+)!
这是初始化我的 SSL 上下文的代码
java - SSLHandShake checkServerTrusted 在 Android 7 Nougat 中调用了 3 次
TrustManager 的 checkServerTrusted 在 1 个请求中被调用 3 次的原因可能是什么?如果 Android 中的第一次 startHandShake 失败,是否会“重新发送”客户端 Hello 消息?
更新:当我使用特定密码时(在 Android 5 中,握手已完成), checkServerTrusted 只调用一次。
java - 在 Java 中恢复 SSL X509TrustManager
我有以下代码有条件地(基于 a boolean
)禁用 SSL 证书检查。
但是,如果我设置boolean
为false
并重新运行我的代码,SSL 检查似乎仍然被禁用(当它应该重新启用时)。
那么,与此相反的逻辑是什么,从而恢复了检查呢?
java - Rest Service 中的 Android 私有证书
我的应用程序适用于许多具有不同证书的 Restservices。我打开一个HttpsURLConnection
,它工作正常。
但是现在 3 个服务点有一个私有根 CA,所以我在我的应用程序中获得了一个证书路径未找到错误的信任锚。
如何让 App 自动从该服务点获取证书?
我不想创建一个忽略 SSL 错误的 Trustmanager。