问题标签 [sslcontext]
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 SSL TrustManager 上的部分链验证
我有一个要求,可以提供一个中间 CA 来信任,但不能提供签署它的 CA。并使用它作为信任库,我希望能够信任具有由该中间 CA 签名的证书的 SSL 服务器。默认实现是期望构建整个链,直到找到受信任的自签名根 CA。我相信这就是整个 X509 平台的基础。但由于某些原因,我只能提供中间 CA。
代码是通常的 SSLContext 创建:
OpenSSL 有一个似乎可以工作的参数。所以我想这不是一个完全非正统的方法。
要求仅在信任库中具有中间 CA 的原因有两个。
- 它使在当前依赖于单个自签名 CA 证书的系统中传递一个受信任的证书变得更加容易。许多组件的通信和设置目前都需要一个证书,而改变这将需要大量的重构。
- 我们要确保我们只信任由给定的中间 CA 证书签名的证书。如果我们将链中的其他 CA 证书添加到信任库中,SSL 实现将信任由其他 CA 签名的任何证书,这也是我们想要避免的。可能还有其他方法可以做到这一点,例如检查 issuer_dn,但我想探索不同的方法。
java - SSLContextBuilder 无法加载KeyMaterial
我正在尝试使用 Apache httpclient-4.5.5(带有 httpcore-4.4.9)从应用“相互 SSL”的服务器获取服务器证书。我正在创建一个 SSLContext 如下:
但是它总是在loadKeyMaterial(...)
. 在调试此方法时,我可以看到他成功加载了密钥库,并且其中包含我在其中创建的密钥。但是,当随后尝试加载与密码 kmopEncKeyPass 关联的密钥条目时,它会返回 UnrecoverableKeyException。
我的(JKS)密钥库有两个(自签名)条目“kmop-enc”用于 SSL 握手,“kmop-sign”用于 SSL 消息签名。别名 kmop-enc 的密码(参数 kmopEncKeyPass)与密钥库的密码(参数 keystorePass)相同。使用自定义 PrivateKeyStrategy 我想确保“kmop-enc”作为别名返回,而不是“kmop-sign”(密码不同)。
使用 keystore-explorer.org 验证我的密钥库显示我的密钥库一切正常。关于它为什么抛出 UnrecoverableKeyException 的任何想法?
xml - 如何在骆驼的 sslContextParameter 中覆盖密钥库别名
我们正在尝试使用带有 Tomcat 的骆驼 2.22.0 中的 SSLContextParameter 来处理 https4 请求。
我们的目标是只为具有多个别名的私钥/公钥使用一个密钥库。我们在加载camel时加载spring ssContextParameter,并且在定义hhtps4 Endpoint时我们只想使用别名,而不为我们的路由中的每个Endpoint定义一个新的sslContextParameter(〜50个路由)。
可能吗 ?我找到了“sslContextParameters/@certAlias”,但似乎需要一个新的 sslContextParameter 定义才能使用它,这不是我需要的,因为我们有大量的 camelRoute。
提前致谢。
java - 如何确保客户端在访问应用程序的某些页面时正在使用(或能够使用)TLS v1.2?
我正在开发基于 Java 的 Web 应用程序上的信用卡支持模块,为了安全起见,我们希望用户在查看信用卡页面时使用支持 TLS v1.2 的浏览器 如何确保它们兼容?注意:如果用户不兼容,我们不希望将用户限制在其他页面。
android - 使用服务器和客户端证书以及私钥创建 SSLContext
我正在编写 Android 应用程序。它通过 TLS 连接到服务器。我从服务器作者收到了 3 个要使用的文件(用于检查通信,稍后将生成密钥): - 服务器证书(cacrt.crt) - 客户端证书(clientcrt.crt) - 客户端私钥(clientkey.key)
我正在尝试SSLContext
使用这些键创建,但我遇到了一些问题。我无法将它们以 .crt 和 .key 文件的格式加载,因此我将它们转换为 BKS 格式(client.bks 用于客户端,server.bks 用于服务器密钥)。但是在创建 KeyStore 时出现异常KeyStoreException: KeyStore was not initialized
。
这是我的代码:
你能帮我修一下吗?我不知道我做错了什么。
maven - 我得到 LEAK: ByteBuf.release() 在垃圾收集之前没有被调用。见 http://netty.io/wiki/reference-counted-objects.html
以下是堆栈跟踪:
根据https://netty.io/downloads.html,我使用了 4.0.31.Final 版本,甚至在最新版本的 netty-4.1.29.Final 中也出现了相同的泄漏。任何更新表示赞赏。
java - SSLConnectionSocketFactory 始终返回 400(2 路 ssl 客户端证书)未收到证书
我有一个 ssl 连接(2 次握手),我无法理解为什么以下代码过程 400(openJdk 11,服务器提供的 p12 文件和密码,服务器提供的 cer 文件),
我通过以下命令从 cer 文件创建了 jks 文件:
编码
上面的代码总是返回 400(没有发送所需的 SSL 证书)。
但以下 curl 有效(在 IOS 上):
任何帮助将不胜感激
java-8 - 如何使用 javax.net.ssl.SSLContext 设置密码套件
在使用 java8 的 Spring Boot 应用程序中,我将 httpClient 连接的底层 SSLConext 设置如下:
我需要将底层 TLS1.2 安全连接的密码套件设置为我选择的更强大的东西。我看不到用我在代码中创建 sslContext 的方式来做到这一点。
有人可以帮我用我的 sslContext 设置密码套件吗?
================更新=================
java - 带有空密钥管理器的 java sslcontext.init
有一段旧代码(不受我控制)初始化为 sslContext.init(null, ...) - 密钥管理器被硬编码为空。稍后,代码将创建一个 ssl 服务器套接字。
我正在尝试提供一个 jks 密钥存储文件来使用证书。如果我能够修改该代码并提供给密钥管理器,那么该代码就可以工作(我试图复制它)。
我的问题是:我怎样才能继续使用该代码,提供空值,并且仍然使用我的 jks 文件?
我尝试设置 javax.net.ssl.keyStore,但该选项被忽略。Javadoc 说,如果密钥管理器为空,系统会找到合适的管理器——这是什么意思?
android - 在 SSLContext 中使用硬件支持的密钥
我想在我的 Android 上为客户端双向 TLS 使用硬件支持的密钥。应使用生物识别技术解锁钥匙。
我发现了如何在 Android 上生成硬件支持的密钥对:
以及如何使用指纹解锁硬件支持的私钥:
我还可以将我的 HttpClient 配置为使用客户端证书:
但是,我没有找到直接解锁硬件支持的私钥以在 SSLContext 使用的 KeyManager 中使用的方法,因为解锁机制适用于加密对象而不是私钥。
如何使生物识别密钥解锁和 TLS 客户端证书在 Android 上协同工作?
更新
KeyProperties.PURPOSE_SIGN
在@pedrofb 点之后,我更新了我的代码以使用and生成密钥对KeyProperties.DIGEST_NONE
。我使用导入到服务器信任库的 CA 签署了客户端密钥对。以及基于 AndroidKeyStore 创建客户端的 KeyManager:
然而,这失败了