OpenSSL,x509:CN(通用名)的意义是什么?

信息安全 证书 虚拟专用网 openssl
2021-08-24 08:24:20

关于这三个项目

  1. 证书颁发机构 (CA)
  2. 网关证书
  3. 端点证书(客户端证书)

公用名CN对于 VPN 有什么意义?证书颁发机构是否必须拥有网关证书的 CN?有关与 VPN 相关的 CN 的任何其他信息都会很棒。

它们如何用于证书的真实性?

如果重要的话,我正在使用 StrongSwan v5.x。

2个回答

从历史上看,证书中的专有名称(由 X.500 指定)旨在指定目录中的一个实体,目录是用于身份管理数据的全球性树状结构存储库。目录可以被认为是一个巨大的 LDAP 服务器,它委托给子服务器,有点类似于DNS但实际上,目录从未存在过,而 LDAP 是目录访问协议的一个实用子集。尽管如此,命名原则仍然有效。

DN 是类型化命名元素的有序序列,对于目录而言,它应该按以下顺序排列:国家、州或省、组织、组织单位(可能有几个),然后是通用名称。X.500 是相当开放的,并且其他排序是可能的(并且该格式支持将多个名称元素放在同一级别),但粗略的想法是通用名称是层次结构的最低级别。因此,一个实体的通用名称,任何实体,都是最精确的命名元素。

由于目录实际上并不存在,因此您可以在通用名称中添加任何您想要的内容,但要遵守以下限制:

  • 编码必须符合 X.509 ASN.1 规范:通用名称限制为 64 个字符(如果使用 64 个代码点UTF8String,按照标准,您应该这样做)。
  • 证书的IssuerDN必须等于SubjectDN其颁发者的。相等规则理论上不区分大小写,但是在完整的 Unicode 世界中实现这些规则可能很复杂,因此您最好确保您具有字节到字节的相等性,这将在任何地方正常工作。
  • SSL 服务器的证书必须包含客户端期望服务器名称(如果使用 HTTPS,此名称将是 URL 中的名称)。这是在RFC 2818 中指定的Subject Alt Name扩展是正常使用,但共同的名称作为备份,以防这种扩展名丢失。由于 SSL 客户端实现并不总是严格遵守相关的 RFC,因此最好避免出现问题,如果 SSL 服务器的证书包含服务器 DNS 名称作为通用名称(完全限定名称,如“ security.stackexchange.com”)。
  • 当证书或从证书中提取的身份“显示”给人类用户时,通用名称将突出显示。例如,如果在 Windows 系统上使用智能卡登录,则在插入智能卡时登录屏幕将以大写字母显示通用名称。所以你最好让通用名对普通人有意义。

在 VPN 服务器的情况下,来自客户端的证书仅供服务器使用。服务器以它认为合适的任何方式解释证书内容,包括主题 DN 及其公用名,包括完全忽略它。例如,在 Microsoft IIS + Active Directory 上下文中,当客户端通过证书进行身份验证时,服务器将使用扩展中的用户主体名称Subject Alt Name,在 Microsoft 特定的 OID 下。如果有人类用户(例如,作为证书选择弹出窗口的一部分),公共名称可能会显示给人类用户,但出于验证目的将被忽略。

通常,您的客户端证书必须包含 VPN 服务器使用的身份验证系统所需的任何内容,并且由于这是高度可配置的,这在很大程度上取决于本地上下文。例如,VPN 服务器可以将身份验证委托给RADIUS服务器,在这种情况下,证书特征(包括通用名称)将由 RADIUS 服务器文档描述;对于 VPN 服务器,这将只是一个不透明的 blob。

含义取决于特定的实现和安装。通常它会识别给定的 VPN 消费者;可以是用户、主机或配置集。

通常签名路径决定证书是否允许,而CN决定它是哪个允许的证书。