Java:如何通过LAN为服务器客户端设置SSL单向身份验证?

时间:2015-03-12 09:10:46

标签: java sockets authentication ssl oneway

我需要的是什么:通过LAN网络在服务器和客户端之间进行安全的TLS / SSL通信。身份验证必须是单向身份验证:

SSL One way authentication

我已经完成的工作:我创建了一个能够通过Wi-Fi网络进行通信的服务器和客户端。我已经实现了SSL套接字,但缺少身份验证......所以它不会工作:)

我需要帮助的地方:我是TLS / SSL的初学者,也是网络安全人员。

  1. CA是强制性的,还是我可以模仿"它? (它给服务器提供了证书,对吗?)
  2. 服务器应该创建自己的证书还是应该给一个(硬编码)?
  3. 客户如何验证此证书?

1 个答案:

答案 0 :(得分:1)

  1. CA不是强制性的本身。 CA签名证书的替代方案是自签名证书,但除非客户端程序明确信任特定的自签名证书,否则验证(验证)同伴会失败。

  2. 您应该创建或请求服务器证书,并配置服务器以使用该证书。有关如何配置证书和其他TLS设置的详细信息取决于您使用的服务器软件或TLS库。

  3. 通常,客户端具有受信任的根CA证书的集合。 最终实体证书由根CA或中间CA 签名,该CA 由某些高级证书签名,一直到根。服务器提供终端实体证书和任何中间证书的证书链,但最多但通常不包括根证书。

    在验证期间,客户端验证从其信任的根CA的任何中有一个有效的签名链。如果是这样,并且如果链中的证书都没有过期或撤销,则将接受服务器证书并继续会话。

    在大多数浏览器和操作系统中,默认情况下通常会安装并信任公共CA的根证书。但是你不需要使用公共CA;您可以创建用于签署证书的私有CA.如果这样做,客户端将需要配置为信任其根证书(详细信息因软件而异)。

    无论您使用公共CA还是私有CA,只要客户端信任根CA并且您已将服务器配置为提供(链式)服务器证书,一切都应该有效!