serverAuth 和 clientAuth 到底是什么意思

信息安全 证书 客户
2021-08-28 07:58:53

我正在建立一个允许员工和客户访问公司系统的网络。为此,我使用 Red Hat Enterprise Linux (RHEL) 7.0 服务器作为防火墙/身份验证服务器。最初出于测试目的,我将使用自签名证书。操作场景是客户端系统(Windows 7/8)与服务器建立 VPN/IKEv2 会话。

我必须将公钥客户端证书分发到 Windows 系统。我是否还必须定义一个保存私钥的服务器证书?这是我有点困惑的地方,因为我看到了很多变体:我看到 Extended keyUsage 字段设置为 clientAuth 和 serverAuth;只是clientAuth;或者只是 serverAuth。

我的假设是,如果客户端发送“正确”的公钥,客户端在尝试与服务器建立 VPN/IKEv2 会话时,应该由服务器“授权”。那么我应该将服务器证书上的 EKU 设置为 clientAuth 吗?或服务器身份验证?或两者?(这对我没有任何意义)

2个回答

理论
这是理论上的通常过程:

您的客户端与服务器建立连接。服务器出示其证书。然后客户端确保:
(1) 证书有效,
(2) 服务器通过质询和响应机制拥有匹配的私钥,
(3) 在证书中设置了“serverAuth”。

然后服务器可能会或可能不会要求客户端提供自己的证书。在这个方向上几乎是一样的。客户出示其证书。然后服务器确保:
(1) 证书有效,
(2) 客户端通过质询和响应机制拥有匹配的私钥,
(3) 在证书中设置了“clientAuth”。否则服务器会断开连接。

现在练习
你的软件是否真的执行步骤 3 完全是另一回事。
那么,如何找出有效的方法?

(1)彻底的方法:阅读手册,做一些实验,联系软件支持。
(2) 懒惰方式:只需在证书上设置每个使用标志。

标准 RFC 5280
现在 RFC 5280 在第 4.2.1.12 节中描述了 EKU ,但不是很冗长。

有问题的“身份验证”是身份验证,而不是授权serverAuth表示该证书可用于对服务器进行身份验证(即该证书允许服务器向客户端证明其身份);clientAuth证书旨在允许客户端向服务器证明其身份(即验证自身)。