【问题标题】:Java : How setup an SSL One-Way authentification for a server-client over a LAN?Java:如何通过 LAN 为服务器客户端设置 SSL 单向身份验证?
【发布时间】:2015-05-14 08:46:58
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java sockets authentication ssl oneway


    【解决方案1】:
    1. CA 不是强制性的本身。 CA 签名证书的替代方案是自签名证书,但除非客户端程序明确信任特定的自签名证书,否则身份验证(验证)对等体将失败。

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

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

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

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

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

    【讨论】:

    • 我不需要连接到 Web 上的现有服务器或应用程序(目前)。我只需要建立一个本地安全连接。如果我理解你上面的解释,我必须:
    • @JeanRene 您可以创建一个私有 CA 来使用,并将您的客户端配置为信任其证书。或者,您可以将客户端配置为显式信任服务器将使用的自签名证书。我已经更新了我的答案(第 3 部分)以澄清。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2014-04-23
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多