gpt4 book ai didi

java - 客户端的证书?

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:39 25 4
gpt4 key购买 nike

我有一个服务器应用程序和一个客户端应用程序。

服务器使用 https,并有一个 .jks 文件。除此之外,我使用登录名和密码进行身份验证。

我想知道客户端是否应该使用 .cert 证书。我认为客户端的证书应该与服务器证书匹配,但看来我错了。

我在理解这个话题时遇到了一些麻烦,所以请谅解。

最佳答案

keystore

Java KeyStore (JKS) 是安全证书(授权证书或公钥证书)的存储库,例如用于 SSL 加密。

  • 在 IBM WebSphere Application Server 和 Oracle Weblogic Server 中,扩展名为 jks 的文件用作 keystore 。
  • Java 开发工具包在文件夹 jre/lib/security/cacerts 中维护一个 CA keystore 。

Keystore 有两种形式:

<强>1。信任:
信任库包含由您信任的人颁发的证书,例如来自 CA 的根证书。

<强>2。身份:

  • 身份存储库包含您自己的证书,它们用于在您访问外部服务时对您进行身份验证。
  • 信任库不包含敏感信息,而身份库包含非常敏感的信息,例如私钥。
  • 包含服务器的演示私钥。此 keystore 为服务器建立身份。


I wonder if the client side should use a .cert certificate.

如果您打算连接到 HTTPS 服务,那么您应该导出服务器的 SSL 证书并导入服务器的 keystore ,也许您可​​以在 jre/lib/security/cacerts 中导入.

客户端只有在双向 SSL 时才需要 SSL 证书,这意味着客户端还需要向服务器发送 SSL 证书,因为服务器已请求相同的证书。

为什么需要它,因为使用 SSL 握手服务器将发送其 SSL 证书,客户端将从其 keystore 中存在的受信任证书列表中验证该证书。如果未通过验证,则无法完成 SSL 握手,因此无法建立通信。因此,您必须在受信任的证书存储区中拥有服务器的 SSL 证书。

I thought the client's certificate should match servers certificate, but it seems that I was wrong.

是的,你是对的,2 个不同方的 SSL 证书会不同。

需要 SSL 证书的各方将在其端生成公私 key 对,并向证书颁发机构 (CA) 提出 CSR 请求,证书颁发机构将使用提供的 key 生成 SSL 证书。


如何导出和导入 SSL 证书

导出证书:

如果可以使用 web 访问,则单击 HTTPS 图标,查看证书并按照导出命令操作。

如果无法使用 web 访问,则使用 openssl导出证书。使用下面的命令

openssl s_client -connect host:port -key our_private_key.pem -showcerts -cert our_server-signed_cert.pem

导入证书:

使用命令 - keytool -import -trustcacerts -file /path/to/ca/ca.pem -alias CA_ALIAS -keystore $JAVA_HOME/jre/lib/security/cacerts

关于导出和导入的进一步阅读:

关于java - 客户端的证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33373541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com