购买证书时的命名约定是什么(如果有)?
当为特定服务器购买 TLS/HTTPS 证书时,我自然会默认使用服务器的名称。例如,如果服务器名为 MOONSERVER,我会将 x509 证书的主题设置为 MOONSERVER。
此外,我需要使用另一个证书进行消息签名。我应该怎么称呼这个?有效名称的规则是什么?例如,连字符、下划线等可以吗?名称是否区分大小写?
购买证书时的命名约定是什么(如果有)?
当为特定服务器购买 TLS/HTTPS 证书时,我自然会默认使用服务器的名称。例如,如果服务器名为 MOONSERVER,我会将 x509 证书的主题设置为 MOONSERVER。
此外,我需要使用另一个证书进行消息签名。我应该怎么称呼这个?有效名称的规则是什么?例如,连字符、下划线等可以吗?名称是否区分大小写?
当您购买这些证书时,这些字段的内容可能由证书销售商的用户界面管理,该用户界面有望对您输入的值进行一些完整性检查。
您应该在主题字段中放置的信息取决于应用程序等。
HTTPS 只是 HTTP over TLS 的一种实现,由 RFC 2818 管理,该规范规定服务器标识必须使用主题备用名称(SAN) 扩展的dnsName字段(如果存在)。
CA/Browser 论坛是由商业 CA 和浏览器供应商组成的联盟,它添加了更严格的限制,并期望服务器标识仅使用 SAN 扩展(即,不检查主题字段中的任何服务器 DNS 名称)。因此,如果您有一个最终用户使用通用 Web 浏览器(几乎是我们所有人)的 Web 应用程序,那么您将需要遵循 CA/B 论坛的要求并在 SAN 中拥有您的主机的 DNS 名称。
请注意,TLS 本身并没有对名称定义任何限制,因此使用 TLS 的其他应用程序可能有不同的要求。X.509 证书的非 TLS 使用也是如此,例如代码签名。RFC 6125 中有关于 DNS 名称解释的指南。
关于字符等方面可接受的规则在定义这些证书的文档中。这是 RFC 5280 用于 Internet 上使用的证书和 X.509 用于所有证书(包括那些在 Internet 上使用的证书)。后者指的是大量文档,例如 X.500、X.501、X.520、X.521 和 X.680。
X.520 第 6 节定义了您可以在主题字段中使用的许多属性。这是一本激动人心的睡前读物,所以如果您不能抽出时间,请坚持使用PrintableString类型的基本字符:
这在政治上可能不正确,因为不会涵盖大多数非英语语言。另一种方法是使用包含世界上大多数字符的utf8String类型。