使用客户端身份验证实现java SSL和TLS服务器套接字

时间:2016-09-24 14:06:45

标签: java sockets ssl tcp server

我正在开发一个项目,该项目包括开发TLS和SSL JAVA TCP / IP(套接字)服务器。

服务器必须接受TLS和SSL TCP / IP连接。

实际上我开发了一个多线程服务器,它可以在同一时间接受并响应许多客户端,但我仍然没有看到使其与TLS和SSL连接一起工作的解决方案

我已阅读有关SSLServerSocketServerSocketFactory的信息,但我没有得到他们如何帮助我获取证书:

我不知道如何为套接字提供CA文件路径(私有证书路径)(例如:CAfile = D:\ projects \ mytools \ eclipse \ TunRootCA1.pem或rootcert.crt),就像在Stunnel中一样

让我更准确地描述一下情况: 实际上,我正在开发的项目包括开发一个服务器JAVA应用程序,该应用程序连接使用TLS或SSL证书的POS设备。 服务器必须接受流并进行一些功能控制(例如金额,PAN,......),然后将其切换到第三方服务器。 服务器必须使用单面证书验证: 客户使用从国家机构网站下载的证书(.ca),服务器使用从同一国家权威机构签署的证书 除TLS和SSL连接外,服务器的所有部分都已准备就绪 感谢

如果有人能描述我实施JAVA SSL和TLS服务器TCP / IP套接字的步骤(带有代码示例),我会很感激

非常感谢

1 个答案:

答案 0 :(得分:0)

不幸的是,这不是TLS / SSL的工作原理。

  

客户端启动连接并将公共证书发送到我的服务器

客户端启动连接,接收服务器证书,验证它,从服务器接收证书请求,并在可能的情况下发送自己的证书。

  

服务器必须使用其私有证书(在某个预定义路径中存储)验证收到的证书

无意义。没有私人证书这样的东西。服务器通过检查其数字签名和(b)通过从其签名者到其信任的签名者形成信任链来验证证书(a)。

  

服务器将肯定响应发送回客户端。

服务器完成TLS / SSL握手或发送TLS警报或关闭连接。对已接受的客户证书没有积极的回应。

  

客户端将其消息发送到服务器(清除消息)。

现在双向加密频道。

  

服务器将其响应消息发送给客户端(清除消息)。

现在双向加密频道。

您的要求既符合非TLS标准,也不符合规定。回顾一下。