问题标签 [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.
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 的子类)
java - Java SSL TrustManager 上的部分链验证
我有一个要求,可以提供一个中间 CA 来信任,但不能提供签署它的 CA。并使用它作为信任库,我希望能够信任具有由该中间 CA 签名的证书的 SSL 服务器。默认实现是期望构建整个链,直到找到受信任的自签名根 CA。我相信这就是整个 X509 平台的基础。但由于某些原因,我只能提供中间 CA。
代码是通常的 SSLContext 创建:
OpenSSL 有一个似乎可以工作的参数。所以我想这不是一个完全非正统的方法。
要求仅在信任库中具有中间 CA 的原因有两个。
- 它使在当前依赖于单个自签名 CA 证书的系统中传递一个受信任的证书变得更加容易。许多组件的通信和设置目前都需要一个证书,而改变这将需要大量的重构。
- 我们要确保我们只信任由给定的中间 CA 证书签名的证书。如果我们将链中的其他 CA 证书添加到信任库中,SSL 实现将信任由其他 CA 签名的任何证书,这也是我们想要避免的。可能还有其他方法可以做到这一点,例如检查 issuer_dn,但我想探索不同的方法。
spring-boot - spring boot 不接 custmize trustManager
我基于spring boot 2.0.3在webApi上工作,并且已经通过application.properties启用了带有自签名证书的ssl,我添加了一个新功能来验证本地CRL和自定义的trustManager,但是spring boot没有选择代码。
你能帮忙找出问题所在吗?如果有人可以展示如何检查本地 CRL 文件,那也很有帮助。
像这样配置属性。
像这样注入定制的信任管理器:
ssl - 在基于 Netty 的客户端中传递自定义 TrustManagerFactory 和自定义主机名验证程序?
我想使用我自己的 TrustManager,即 X509TrustManager
forcheckServerTrusted
方法。另外,我需要进行自定义主机名验证。我可以看到在 sslContextBuilder 中,它需要 TrustManagerFactory。在这里,我想传递我的自定义 TrustManagerFactory。
另外,请建议,我如何在此处进行自定义主机名验证。
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 和证书替换为获得的,但仍然无法正常工作,有什么想法吗?
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,不知道这是在哪里
似乎它与java有任何关系,但我对java一无所知,而且我的项目中没有任何java文件,虽然我知道必须在Unity for Android中构建项目。
我希望找到一些关于在 Unity 中使用 X509Trustmanager 的位置或方式来配置它的文档,但不知道它在哪里
拜托,如果您能以某种方式帮助我,我将不胜感激。
非常感谢任何可能的帮助
java - 如何使用私有 ssl 证书连接到私有 url
我正在尝试将我的 android 应用程序连接到属于私人公司的 url,以便检索和发送信息。但是,当我这样做时,我收到一个错误 Trust anchor for certificate path not found,但 url 的 ssl 证书是有效的,我做了研究,我使用了以下代码,我曾经在类 Http TrustManager 中信任证书
这就是我在主要活动中的称呼
然而,这不起作用。请提供必要的帮助
java - 可以为 X509TrustManager 缓存 checkServerTrusted 结果吗?
在我的 JavaFX 客户端应用程序中,我正在实现自己的TrustManager
依赖于 Platform TrustManager 的应用程序。
基本上,我总是调用 Platform trustManager,如果连接不受信任,我可以弹出一个警告对话框,询问用户是否要信任证书(就像浏览器一样)。
我面临一个问题,证书指定了多个 URL 以便使用AIA(授权信息访问)检索中间证书,其中一些没有响应。因此,每次checkServerTrusted
调用该方法时,响应可能会很长,因为 Java 试图访问无法访问的 URL。当超时发生时,Java 尝试另一个 URL,最后,其中一个终于响应了。
在我的客户端会话期间,我可以缓存checkServerTrusted
给定证书的结果chain
并authType
返回缓存的值,而不是调用TrustManager
? 或者这是一个坏主意或不可靠?
android - 由于 http 信任管理器,应用程序被 Google Play 拒绝
我能够构建发布 apk,并且经过测试,一切正常。但是,当我将其上传到 Play 商店时,由于某些恶意行为,它被拒绝了。
服务器连接代码:
构建.gradle:
谷歌播放拒绝错误信息: