java - SSL:客户端身份验证,同一商店中的多个证书版本

标签 java ssl ssl-certificate ssl-client-authentication

情况是这样的:

  1. 我们的应用程序与多个第 3 方应用程序通信,其中很少需要客户端身份验证。

  2. 一个特定的第三方应用程序需要客户端身份验证并已适当提供证书(我们将其导入到我们的 keystore (JKS))。这是在集成测试期间。在测试环境中一切正常。

  3. 现在在上线之前,他们想升级 CA 颁发的证书。

  4. 对于新的证书,我们总是可以创建一个新的商店,但是为了 为方便起见,想知道这两个证书(旧的和新的)是否可以驻留在同一家商店中? (这样万一他们回滚,我们这边没有变化)

  5. URL 相同,应用程序(http 客户端库)如何知道在调用服务器时要显示哪个客户端证书版本?

最佳答案

您可以在信任库中同时拥有这两个证书。 JSSE 将选择与服务器在请求客户端证书时建议的可信 CA 匹配的那个。

但是,您所描述的场景非常不安全。如果您是客户,您应该提供自己的客户证书,而不是来自其他人的证书。否则私钥一定会泄露,这意味着证书不能用于其预期目的,并且您可以合法地拒绝所有据称通过这种方式进行身份验证的交易。这种方案下的客户端身份验证没有任何用处,您不应该在这上面浪费更多时间。

关于java - SSL:客户端身份验证,同一商店中的多个证书版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40077950/

相关文章:

java - log4j2 配置 XML 文件,用于 2 个日志文件,每次运行都有新文件夹

java - 从 process.getErrorStream() 读取时 BufferedReader 阻塞

docker - 在 Rancher 中使用 cert-manager 获取自签名证书

java - java中Thread.join()的反向使用

java - 难以理解这里的递归

wordpress - Cloudflare SSL无法在我的网站WordPress上运行

php - 使用 PHP 为 Apple Wallet passes 创建 PKCS #7 分离签名

ios - 是否可以创建自签名 ssl 证书来避免应用程序代码中的 "challenge"?

python - "SSLError: [SSL] PEM lib (_ssl.c:2532)"是什么意思使用 Python ssl 库?

vb.net - 在 dotnet 中使用 ssl 进行双向身份验证