Java : 如何通过 LAN 为 server-client 设置 SSL One-Way 身份验证?

Java : How setup an SSL One-Way authentification for a server-client over a LAN?

我需要: 服务器和客户端之间通过 LAN 网络的安全 TLS/SSL 通信。身份验证 必须 是一个 way-authentication :

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

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

  1. CA 是强制性的还是我可以 "emulate"? (它为服务器提供证书,对吗?)
  2. 服务器应该创建自己的证书还是我应该给一个(硬编码)?
  3. 客户端如何验证这个证书?
  1. CA 本身并不是强制性的。 CA 签名证书的替代方案是 自签名 证书,但除非特定的自签名证书被客户端程序 显式 信任,对等方的身份验证(验证)将失败。

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

  3. 通常,客户端有一组受信任的根 CA 证书end-entity 证书由根 CA 或 中间 CA 签名,后者由某些高级证书签名,一直到一个根。服务器提供终端实体证书和任何中间证书的证书链,直到但(通常)不包括根证书。

    在验证过程中,客户端验证是否存在从其信任的根 CA 的 任何 向下的有效签名链。如果是这样,并且链中的 none 证书已过期或被吊销,服务器证书将被接受,会话将继续。

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

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