在 mTLS 中,客户端 CN 名称真的很重要吗?
In mTLS does the client CN name actually matter?
对于普通的 TLS,客户端将检查我正在与之通信的服务器实际上是否位于与 CN 匹配的 FQDN 上,因此如果证书用于不同的域,则默认情况下 TLS 不应工作,因为证书不适用于这个网站。
对于 mTLS,当服务器检查客户端证书时,它能以某种方式检查客户端地址是否与 CN 匹配,还是只是检查证书是否与密钥匹配并且证书在客户端是否受信任?即如果我从互联网上的任何机器使用正确的客户端 key/cert 如果服务器配置为信任该证书,服务器应该连接,还是需要客户端以某种方式位于特定地址?
这取决于具体的用例。
在某些情况下,mTLS 用于服务器到服务器到通信,例如 SIP (VoIP)。在这些情况下,通常期望客户端证书包含发件人的域,类似于服务器证书。以 SIP 为例:这里不同的系统也可以切换角色(即两个站点都可以发起呼叫),以前的客户端证书现在用作服务器证书。
在其他情况下,在 TLS 握手期间不会验证主题,但会从证书主题中提取用户身份并将其提供给应用程序。然后应用程序可能会进行额外的检查,比如只允许来自主题中编码的特定组织的用户。因此,即使在 TLS 握手期间没有在证书验证中使用该主题,它仍然是相关的。
对于普通的 TLS,客户端将检查我正在与之通信的服务器实际上是否位于与 CN 匹配的 FQDN 上,因此如果证书用于不同的域,则默认情况下 TLS 不应工作,因为证书不适用于这个网站。
对于 mTLS,当服务器检查客户端证书时,它能以某种方式检查客户端地址是否与 CN 匹配,还是只是检查证书是否与密钥匹配并且证书在客户端是否受信任?即如果我从互联网上的任何机器使用正确的客户端 key/cert 如果服务器配置为信任该证书,服务器应该连接,还是需要客户端以某种方式位于特定地址?
这取决于具体的用例。
在某些情况下,mTLS 用于服务器到服务器到通信,例如 SIP (VoIP)。在这些情况下,通常期望客户端证书包含发件人的域,类似于服务器证书。以 SIP 为例:这里不同的系统也可以切换角色(即两个站点都可以发起呼叫),以前的客户端证书现在用作服务器证书。
在其他情况下,在 TLS 握手期间不会验证主题,但会从证书主题中提取用户身份并将其提供给应用程序。然后应用程序可能会进行额外的检查,比如只允许来自主题中编码的特定组织的用户。因此,即使在 TLS 握手期间没有在证书验证中使用该主题,它仍然是相关的。