为什么 EAP-TLS 客户端需要 CA 证书?

信息安全 验证 证书 公钥基础设施 无线上网 wpa2
2021-08-13 10:21:05

在使用 WPA2 EAP-TLS 设置客户端时,大多数客户端(即:我的手机、我的计算机)都需要客户端公钥/私钥对(出于显而易见的原因)和证书颁发机构证书。

这是第二个参数,我不确定它的用途。我当前的设置如下所示:

.
└── root-ca
    ├── wifi-client-ca
    │   └── client1-client-cert
    └── wifi-server-cert

我有一个自签名根 CA ( root-ca),它在下面分支。我的 RADIUS 服务器wifi-server-cert用作 SSL 证书,并使用wifi-client-ca证书颁发机构来验证客户端证书。

我在任何地方都使用链证书部署,包括客户端和服务器端证书组件。

client1-client-cert我在我的 Ubuntu 机器上使用和连接没有任何问题wifi-client-ca,但我无法使用这些相同的证书在 Android 上连接。我认为问题在于Android没有正确攀登证书链。

这分解为两个类似的问题:

  1. 为什么 EAP-TLS 客户端需要 CA 证书/它有什么作用?
  2. 应该在我的客户端上使用哪个 CA 证书,root-ca证书(直接签署wifi-server-cert)还是wifi-client-ca
1个回答

EAP-TLS 真正封装了 SSL/TLS 握手,服务器和客户端在其中相互发送证书。这具有以下属性:

  • 当服务器发送一个证书时,它实际上发送了一个证书链,包括颁发它的 CA,以及它上面的 CA,等等,直到根(根本身可能被发送,但这是可选的)。
  • 同样,当客户端发送证书时,它也是证书链的一部分。
  • 客户端验证服务器的链,服务器验证客户端的链。

因此,在客户端,使用您的符号:

  • 客户端必须知道wifi-client-ca,因为它必须将其作为“客户端链”的一部分发送到服务器。
  • 客户端必须知道信任root-ca才能验证服务器的证书(这对于安全性至关重要:这可以保护客户端免于与假接入点通信)。

一些客户可能会被说服wifi-server-cert直接信任,但并非所有客户都允许这种直接信任,当证书过期时,这将意味着麻烦。

考虑以下几点可能会有所启发:客户端的证书是针对服务器的,而不是针对客户端本身的;因此,客户端不需要信任自己的证书。一般而言,服务器证书的根 CA 和客户端证书的根 CA 可能不同且彼此无关。尽管如此,客户端必须知道(但不一定信任)自己证书的链,才能将其发送到服务器,正如 SSL/TLS 所要求的那样。