我们最近开始创建带有 subjectAltName 的证书,除了使用 CN 进行服务器识别之外,我还注意到浏览器中的 CN 识别存在问题
在我们的案例中
- 中国 =>www.example.com
- SAN =>www.machinename.com
如果我尝试使用 CN 访问该网站,浏览器会抱怨证书有错误。
使用 SAN 效果很好。
我对此进行了进一步检查,RFC 6125第 6.4.4 节规定 -
如上所述,如果提供的标识符包括 DNS-ID、SRV-ID、URI-ID 或客户端支持的任何特定于应用程序的标识符类型,则客户端不得寻求 CN-ID 参考标识符的匹配项。因此,当且仅当提供的标识符不包括 DNS-ID、SRV-ID、URI-ID 或客户端支持的任何特定于应用程序的标识符类型时,客户端才可以作为最后的手段检查字符串,其形式与主题字段的通用名称字段中的完全限定 DNS 域名相匹配(即 CN-ID)。
基于此,我得出结论,CN 和 SAN 是 -
- 不免费,因此
- CN 应始终是 SAN 中提供的列表的子集
它是否正确?
编辑:我知道这是特定于浏览器的,我正在寻找有关现代浏览器(IE11,Edge,Chrome,Firefox等)的指导。
答案1
“尽管使用通用名称是现有做法,但已被弃用,并鼓励认证机构改用 dNSName。”RFC 2818
甚至 RFC 6125 也包含以下内容。
“不要在主题的通用名称中包含和检查看起来像域名的字符串。”RFC 6125,第 1.5 章
自版本 57 以来,使用 CN 作为 DNS 名称已被弃用,并且无法被 Chrome 等现代浏览器识别。
您应该将所有 DNS 名称移动到证书的 subjectAltName 部分。