我可以将通配符与 SAN 自签名证书一起使用吗?

我可以将通配符与 SAN 自签名证书一起使用吗?

我们有一个可以通过互联网访问的开发服务器,但 IP 受到限制,因此这里的安全性只是一种允许我们重现实时环境的方式,而不是试图确保安全。顶级域名(我们称之为)dev.com未被使用,但开发人员将每个站点设置在他们自己的特定子域中。因此,假设有和site1.com,那么开发人员和将具有完整的 URL,如下所示:site2.comsite3.comgeorgenico

  • www.site1.com.george.dev.com
  • www.site2.com.george.dev.com
  • www.site1.com.nico.dev.com
  • ETC

我最初以为通配符自签名证书就可以了,但后来发现它只*.dev.com适用于something.dev.com而不是子子域。我决定按照这个答案.当我使用:

DNS.1 = www.site2.com.nico.dev.com
DNS.2 = www.site1.com.george.dev.com

一切正常,但不幸的是,许多网站都有很多开发人员,因此这里的条目会超过 100 个DNS.x。我想知道是否可以在[ alternate_names ]我的 部分中使用通配符openssl.cnf。我尝试了以下方法:

DNS.1 = dev.com
DNS.2 = www.site1.com.george.dev.com
DNS.3 = *.*.*.nico.dev.com

虽然DNS.2可以工作,但是却不行, Chrome 中DNS.3出现错误。NET::ERR_CERT_COMMON_NAME_INVALID

有没有办法做到这一点,或者我必须生成一个很长的条目列表DNS.x才能覆盖所有站点?

我听说通过创建自己的 CA 可以实现这一点。我按照这个答案DNS.1在我自己的 CA 完好无损的情况下,我创建了一个与通用名称相同且DNS.2带有通配符的证书,DNS.3如下所示:

DNS.1 = dev.com
DNS.2 = *.dev.com
DNS.3 = *.*.*.*.nico.dev.com

然后,我将cacert.pem上面链接的指南的第一步导入到 Chrome 作为受信任的根证书颁发机构,然后重新启动浏览器。对于每个域配置,我分别将SSLCertificateKeyFile和设置SSLCertificateFileserverkey.pem和,servercert.pem并测试了几个域:

因此,第一级通配符似乎可以正常工作,但低于第一级的通配符则不行。Chrome 和 IE(使用 Windows 证书)以及 Firefox(自行管理证书)也存在同样的问题。

所以我的问题仍然存在,以这种方式使用 sub-sub(-sub*) 域是否可行?

答案1

只能有一个级别的通配符。

*.example.com 将涵盖 any.example.com,但不包括 one.anything.example.com。

*.subdomain.example.com 将处理任何事情.subdomain.example.com。

答案2

公共签名证书:

技术解答

是的。没有什么可以阻止创建具有任意通配符级别和域组合的通配符子域 SAN 证书。如果您管理自己的内部 CA,则可以创建具有任意子域、通配符等组合的 SAN 证书。

实用答案 根据我自己的经验

不。或者不太可能…… 我不知道有哪个 CA 会卖给你这些证书。我曾向几家 CA 询问过这个解决方案,但每家都立即拒绝了请求。我怀疑他们担心提供此类证书会亏本。他们更希望你为每个区域(子域或非子域)准备一个通配符,或者一个最多包含 SAN 证书n条目数。 n是特定 CA 会限制您的数量。我找不到会出售带有通配符子域条目的 SAN 证书的 CA。我会提供我查询的 CA 列表,但我怀疑这可能不合适。

[更新]

自签名证书

我误解了这个问题的意思。我认为需要一个例子 openssl.cnf。 以下是一个例子 您需要用通配符子域名替换 DNS 条目。security.stackexchange.com以及此设置。我没有测试过这一点,因为我的需求是围绕可公开访问的 URL,而 CA 不允许将此作为​​选项。

相关内容