Java SSL 套接字——客户端证书证明

加尔维斯顿01

我正在尝试创建一个 java SSL 套接字服务器应用程序,一些 java SSL 套接字客户端应用程序将连接到该应用程序。为保证通信双方的可信度,

(1) 如果客户端的证书是用服务器的私钥签名的,服务器应该只接受客户端连接

(2) 如果服务器的证书包含在客户端的可信存储中,则客户端应该只与服务器通信。

因为我对 JSSE 完全陌生,所以我只管理客户端应用程序以仅当其证书包含在客户端的受信任存储中时才连接到服务器(条件 2)。但是,我不知道如何达到我的第一个条件......

我会很感激每一种帮助。

最好的问候,加尔维斯顿01

0x十进制

如果我正确理解您的问题,那么您要问的是如何启用双向 SSL/TLS。这需要客户端验证服务器证书(您问题中的第 2 点)和服务器验证客户端证书 - 称为客户端身份验证(第 1 点)。

听起来您已经获得了“常规”的 TLS 工作方式。我假设您自己创建并签署了服务器证书(又名自签名证书),这就是您必须将服务器证书本身导入客户端信任库的原因 - 没有使用过的 CA 根/中间证书与之签署。

要启用客户端身份验证(第 1 点),您需要做两件事:

  1. 确保客户端证书在服务器的信任库中(和以前一样,如果这不是自签名证书,那么您需要将根/中间证书导入服务器信任库,无需导入证书本身)。由于您已经在客户端完成了此过程,因此应该不会造成任何问题。

  2. 在服务器上配置 JSSE 以启用客户端身份验证。为此,您需要设置以下属性:

    SSLServerSocket.setNeedClientAuth(true)

假设服务器上的信任库包含您的自签名客户端证书,而客户端上的信任库包含您的自签名服务器证书,那么这应该可以工作。

如果您没有使用自签名证书,但实际上可以访问测试 CA 或使用真正签名的证书(没有理由不使用letencrypt),那么您可能想查看这些 SO 问题的答案和评论:

客户端未在 TLS 中发送用于客户端身份验证的证书

客户端身份验证失败的双向 TLS

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Powershell SSL套接字客户端

来自分类Dev

HAProxy SSL终止+客户端证书验证+ curl / Java客户端

来自分类Dev

即使客户端未发送证书,SSL套接字连接仍能正常工作?

来自分类Dev

SSL套接字-Java和证书?

来自分类Dev

Java证书客户端SSL:无法找到请求的目标的有效证书路径

来自分类Dev

套接字中的Java客户端

来自分类Dev

异步客户端Java套接字

来自分类Dev

客户端的SSL证书

来自分类Dev

Java SSL客户端-服务器:无法找到有效的证书

来自分类Dev

禁用客户端SSL证书

来自分类Dev

Java客户端套接字返回连接超时异常

来自分类Dev

客户端套接字-获取IP-Java

来自分类Dev

Java处理多个客户端套接字

来自分类Dev

Java套接字-如何模拟多个客户端

来自分类Dev

(Java / Android)客户端套接字抛出IOException

来自分类Dev

Java套接字-许多客户端之间的消息

来自分类Dev

Server(Python)-使用套接字的客户端(Java)通信

来自分类Dev

Java客户端/服务器套接字问题

来自分类Dev

Java TCP 客户端/服务器套接字

来自分类Dev

带有SSL的Java JMX客户端

来自分类Dev

使用PEM文件的Java SSL SOAP客户端

来自分类Dev

Java:如何添加SSL客户端身份验证

来自分类Dev

Java SSL客户端/服务器随机值

来自分类Dev

对 Java 客户端和 WebSphere MQ 使用 SSL 支持

来自分类Dev

将输入从C套接字客户端读取到Java套接字服务器

来自分类Dev

无法从Java套接字服务器接收数据到C套接字客户端

来自分类Dev

将输入从C套接字客户端读取到Java套接字服务器

来自分类Dev

设置客户端套接字和服务器套接字侦听器 (Java)

来自分类Dev

Python-通过SSL套接字的Paramiko客户端-非阻塞问题

Related 相关文章

热门标签

归档