问题标签 [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.

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 投票
1 回答
5809 浏览

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 的任何想法?

0 投票
1 回答
1010 浏览

xml - 如何在骆驼的 sslContextParameter 中覆盖密钥库别名

我们正在尝试使用带有 Tomcat 的骆驼 2.22.0 中的 SSLContextParameter 来处理 https4 请求。

我们的目标是只为具有多个别名的私钥/公钥使用一个密钥库。我们在加载camel时加载spring ssContextParameter,并且在定义hhtps4 Endpoint时我们只想使用别名,而不为我们的路由中的每个Endpoint定义一个新的sslContextParameter(〜50个路由)。

可能吗 ?我找到了“sslContextParameters/@certAlias”,但似乎需要一个新的 sslContextParameter 定义才能使用它,这不是我需要的,因为我们有大量的 camelRoute。

提前致谢。

0 投票
1 回答
145 浏览

java - 如何确保客户端在访问应用程序的某些页面时正在使用(或能够使用)TLS v1.2?

我正在开发基于 Java 的 Web 应用程序上的信用卡支持模块,为了安全起见,我们希望用户在查看信用卡页面时使用支持 TLS v1.2 的浏览器 如何确保它们兼容?注意:如果用户不兼容,我们不希望将用户限制在其他页面。

0 投票
0 回答
629 浏览

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

这是我的代码:

你能帮我修一下吗?我不知道我做错了什么。

0 投票
1 回答
2245 浏览

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 中也出现了相同的泄漏。任何更新表示赞赏。

0 投票
1 回答
313 浏览

java - SSLConnectionSocketFactory 始终返回 400(2 路 ssl 客户端证书)未收到证书

我有一个 ssl 连接(2 次握手),我无法理解为什么以下代码过程 400(openJdk 11,服务器提供的 p12 文件和密码,服务器提供的 cer 文件),

我通过以下命令从 cer 文件创建了 jks 文件:

编码

上面的代码总是返回 400(没有发送所需的 SSL 证书)。

但以下 curl 有效(在 IOS 上):

任何帮助将不胜感激

0 投票
1 回答
5967 浏览

java-8 - 如何使用 javax.net.ssl.SSLContext 设置密码套件

在使用 java8 的 Spring Boot 应用程序中,我将 httpClient 连接的底层 SSLConext 设置如下:

我需要将底层 TLS1.2 安全连接的密码套件设置为我选择的更强大的东西。我看不到用我在代码中创建 sslContext 的方式来做到这一点。

有人可以帮我用我的 sslContext 设置密码套件吗?

================更新=================

0 投票
0 回答
1053 浏览

java - 带有空密钥管理器的 java sslcontext.init

有一段旧代码(不受我控制)初始化为 sslContext.init(null, ...) - 密钥管理器被硬编码为空。稍后,代码将创建一个 ssl 服务器套接字。

我正在尝试提供一个 jks 密钥存储文件来使用证书。如果我能够修改该代码并提供给密钥管理器,那么该代码就可以工作(我试图复制它)。

我的问题是:我怎样才能继续使用该代码,提供空值,并且仍然使用我的 jks 文件?

我尝试设置 javax.net.ssl.keyStore,但该选项被忽略。Javadoc 说,如果密钥管理器为空,系统会找到合适的管理器——这是什么意思?

0 投票
1 回答
686 浏览

android - 在 SSLContext 中使用硬件支持的密钥

我想在我的 Android 上为客户端双向 TLS 使用硬件支持的密钥。应使用生物识别技术解锁钥匙。

我发现了如何在 Android 上生成硬件支持的密钥对:

以及如何使用指纹解锁硬件支持的私钥:

我还可以将我的 HttpClient 配置为使用客户端证书:

但是,我没有找到直接解锁硬件支持的私钥以在 SSLContext 使用的 KeyManager 中使用的方法,因为解锁机制适用于加密对象而不是私钥。

如何使生物识别密钥解锁和 TLS 客户端证书在 Android 上协同工作?

更新

KeyProperties.PURPOSE_SIGN在@pedrofb 点之后,我更新了我的代码以使用and生成密钥对KeyProperties.DIGEST_NONE。我使用导入到服务器信任库的 CA 签署了客户端密钥对。以及基于 AndroidKeyStore 创建客户端的 KeyManager:

然而,这失败了