我们有一个用例,我们想为以下内容提供 SSL 证书:
auth.SOME_ID.example.com
但是,SOME_ID 会有多个值。SSL 通配符证书是否auth.*.example.com
允许,或者通配符必须是最高级别的子域?
答案1
auth.*.example.com
不是 DNS 中的有效名称。通配符标签必须是最左侧的标签,并且不能有多个。
各种 CA 和浏览器关心它是一个无效的 DNS 名称则完全是另一个问题(X.509 证书中的 DN 字段应该是 X.500 目录路径,因此那里的所有 DNS 名称一开始都是横向插入的),我认为这个问题已经得到充分回答了。
答案2
您不能这样做。实际上,证书 DNS 名称中只能有一个通配符,并且它必须位于最左边的位置。
一些选项:
- 在您的环境中创建
auth
一个保留名称,并设计您的系统以使用SOME_ID.auth.example.com
(*.auth.example.com
是有效的通配符证书)。 - 设计您的服务以使用前缀,因此名称处于同一级别:
auth-SOME_ID.example.com
。然后一个简单的*.example.com
通配符证书将涵盖您。 - 构建基础设施,根据需要从 LetsEncrypt.org 等提供商处为
auth.SOME_ID.example.com
您需要的特定地址请求新证书。
还有其他方法。例如,您可以成为自己的证书颁发机构……但是,如果您希望这些证书得到公众信任,那么这几乎肯定会带来更多的麻烦。重点是您需要寻找另一种方法来实现这一点。这需要一些思考,但并非不可能。