问题标签 [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 投票
0 回答
495 浏览

android - 细粒度 X509 证书检查和 TrustManagerFactory 初始化

我正在尝试在我的 android 应用程序中配置一个 https 客户端,该客户端将对从服务器接收到的证书链执行细粒度检查。

更准确地说,我想检查:

  • 如果链包含给定的 CA 证书(自定义 CA)
  • 链尾证书的公用名和组织名的值

我虽然这可以通过使用正确构造的 CertPathTrustManagerParameters 初始化 TrustManagerFactory 来完成,但此代码片段的第二行:

抛出以下异常:

从这篇文章:https ://security.stackexchange.com/questions/83372/what-is-the-difference-of-trustmanager-pkix-and-sunx509 我了解 Android JSSE 提供程序可能不支持使用 CertPathTrustManagerParameters 初始化 TrustManagerFactory。

我想知道是否可以在 Android 上使用 CertPathTrustManagerParameters 初始化 TrustManagerFactory。

我的问题的备用解决方案是使用包含我的 CA 证书的 KeyStore 初始化 TrustManagerFactory 并覆盖生成的 TrustManager 的checkServerTrusted(X509Certificate[] chain, String authType)函数,添加对组织和公用名的检查。

笔记 :

不管调用时指定的算法

返回的 TrustManagerFactory 对象始终设置为RootTrustManagerFactorySpi作为 TrustManagerFactorySpi。

然后,函数

在 RootTrustManagerFactorySpi 中调用以下函数:

这表明,当使用ManagerFactoryParameters 初始化时,TrustManagerFactory 只接受要提供的ApplicationConfigParameters并拒绝CertPathTrustManagerParameters(两者都是 ManagerFactoryParameters 的子类)

0 投票
1 回答
1063 浏览

java - Java SSL TrustManager 上的部分链验证

我有一个要求,可以提供一个中间 CA 来信任,但不能提供签署它的 CA。并使用它作为信任库,我希望能够信任具有由该中间 CA 签名的证书的 SSL 服务器。默认实现是期望构建整个链,直到找到受信任的自签名根 CA。我相信这就是整个 X509 平台的基础。但由于某些原因,我只能提供中间 CA。

代码是通常的 SSLContext 创建:

OpenSSL 有一个似乎可以工作的参数。所以我想这不是一个完全非正统的方法。

要求仅在信任库中具有中间 CA 的原因有两个。

  • 它使在当前依赖于单个自签名 CA 证书的系统中传递一个受信任的证书变得更加容易。许多组件的通信和设置目前都需要一个证书,而改变这将需要大量的重构。
  • 我们要确保我们只信任由给定的中间 CA 证书签名的证书。如果我们将链中的其他 CA 证书添加到信任库中,SSL 实现将信任由其他 CA 签名的任何证书,这也是我们想要避免的。可能还有其他方法可以做到这一点,例如检查 issuer_dn,但我想探索不同的方法。
0 投票
0 回答
895 浏览

spring-boot - spring boot 不接 custmize trustManager

我基于spring boot 2.0.3在webApi上工作,并且已经通过application.properties启用了带有自签名证书的ssl,我添加了一个新功能来验证本地CRL和自定义的trustManager,但是spring boot没有选择代码。

你能帮忙找出问题所在吗?如果有人可以展示如何检查本地 CRL 文件,那也很有帮助。

像这样配置属性。

像这样注入定制的信任管理器:

0 投票
0 回答
276 浏览

ssl - 在基于 Netty 的客户端中传递自定义 TrustManagerFactory 和自定义主机名验证程序?

我想使用我自己的 TrustManager,即 X509TrustManagerforcheckServerTrusted方法。另外,我需要进行自定义主机名验证。我可以看到在 sslContextBuilder 中,它需要 TrustManagerFactory。在这里,我想传递我的自定义 TrustManagerFactory。

另外,请建议,我如何在此处进行自定义主机名验证。

0 投票
1 回答
1917 浏览

java - 在 OkHttp 中信任/白名单证书(未找到证书路径的信任锚)

我在使用 android 4 设备时遇到问题,连接到服务器时收到以下异常:

java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。在 com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:410) 在 okhttp3.internal.connection.RealConnection.connectTls(SourceFile:319) 在 okhttp3.internal.connection.RealConnection.establishProtocol(SourceFile:283) 在okhttp3.internal.connection.RealConnection.connect(SourceFile:168) at okhttp3.internal.connection.StreamAllocation.findConnection(SourceFile:257) at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(SourceFile:135) at okhttp3.internal.connection .StreamAllocation.newStream(SourceFile:114) 在 okhttp3.internal.connection.ConnectInterceptor.intercept(SourceFile:42) 在 okhttp3.internal.http.RealInterceptorChain。

服务器证书来自 Cloudflare,我使用https://www.digicert.com/help/等几个工具进行了检查,看起来还可以。

但由于某种原因,我不明白它在 Android 4 版本中开始失败。

尝试了信任所有证书的解决方案[LINK]并且它有效,但这显然存在安全问题,例如将您的应用程序暴露于“中间人”攻击

如何实现具有默认行为但仅将服务器证书列入白名单的 TrustManager。

谢谢

编辑:按照OkHttp@CustomTrust的示例(感谢 CommonsWare)

使用了命令:

在证书链给了我两个格式的证书:

将示例中的 url 和证书替换为获得的,但仍然无法正常工作,有什么想法吗?

0 投票
2 回答
3566 浏览

android - java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。在 api 上少 24

我在 19 到 24 的 api 上的 logcat 中收到此错误,并且在我的应用程序中没有从服务器加载数据我搜索了该错误并找到了该解决方案

并在我的应用程序类 onCreate 中调用它,这解决了我的问题,但在那个答案中,如果找到该解决方案,则会出现提示此代码不相关且不应使用!谷歌禁止它。

所以有人知道谷歌针对该错误允许的替代解决方案是什么?

0 投票
1 回答
551 浏览

android - 如何修复使用 Unity 3D Android X509TrustManager 制作的游戏被 Google Play 拒绝?

我在 Unity 3D 2019.2 Android 中制作了一个游戏,并将其发送到 Google Play,我收到了这条消息,

您的应用程序有一个安全警报,因为正在使用 X509TrustManager 接口的不安全实现和 Apache HTTP 客户端,从而导致安全漏洞。

请,如果你能以某种方式帮助我,我将非常感激,以了解 X509TrustManager 在 Unity 中的位置,它在我的 Unity 项目中使用的位置,以及如何修复它,或者它在哪里修改它。

我已经在互联网上搜索了几个小时 Unity 与 X509TrustManager 和 Unity 之间的任何关系,但未能找到任何可能的解决方案。

我在 Unity 中使用 Split by architecture 来构建多个 APK 我没有任何自定义 Android Manifest,它是在构建时由 Unity 构建的。

据我所知,我没有使用任何 SSL 证书或以任何方式使用 Trustmanager。我不使用任何类型的插件,也没有任何类型的应用内购买。据我所知,我不收集任何用户数据,也不连接到互联网

我没有安装 Google Play 插件,我只有 Unity PlayServicesResolver

谷歌让我看看这个参考,但我对此一无所知,我正在使用 Unity,不知道这是在哪里

https://developer.android.com/reference/javax/net/ssl/X509TrustManager.html#checkServerTrusted(java.security.cert.X509Certificate[]

似乎它与java有任何关系,但我对java一无所知,而且我的项目中没有任何java文件,虽然我知道必须在Unity for Android中构建项目。

我希望找到一些关于在 Unity 中使用 X509Trustmanager 的位置或方式来配置它的文档,但不知道它在哪里

拜托,如果您能以某种方式帮助我,我将不胜感激。

非常感谢任何可能的帮助

0 投票
0 回答
56 浏览

java - 如何使用私有 ssl 证书连接到私有 url

我正在尝试将我的 android 应用程序连接到属于私人公司的 url,以便检索和发送信息。但是,当我这样做时,我收到一个错误 Trust anchor for certificate path not found,但 url 的 ssl 证书是有效的,我做了研究,我使用了以下代码,我曾经在类 Http TrustManager 中信任证书

这就是我在主要活动中的称呼

然而,这不起作用。请提供必要的帮助

0 投票
1 回答
279 浏览

java - 可以为 X509TrustManager 缓存 checkServerTrusted 结果吗?

在我的 JavaFX 客户端应用程序中,我正在实现自己的TrustManager依赖于 Platform TrustManager 的应用程序。

基本上,我总是调用 Platform trustManager,如果连接不受信任,我可以弹出一个警告对话框,询问用户是否要信任证书(就像浏览器一样)。

我面临一个问题,证书指定了多个 URL 以便使用AIA(授权信息访问)检索中间证书,其中一些没有响应。因此,每次checkServerTrusted调用该方法时,响应可能会很长,因为 Java 试图访问无法访问的 URL。当超时发生时,Java 尝试另一个 URL,最后,其中一个终于响应了。

在我的客户端会话期间,我可以缓存checkServerTrusted给定证书的结果chainauthType返回缓存的值,而不是调用TrustManager? 或者这是一个坏主意或不可靠?

0 投票
2 回答
1625 浏览

android - 由于 http 信任管理器,应用程序被 Google Play 拒绝

我能够构建发布 apk,并且经过测试,一切正常。但是,当我将其上传到 Play 商店时,由于某些恶意行为,它被拒绝了。

服务器连接代码:

构建.gradle:

谷歌播放拒绝错误信息: