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

Leo*_*lis 5 https wildcard ssl-certificate

我们有一个可通过 Internet 访问的开发服务器,但受 IP 限制,因此这里的安全性只是允许我们重现实时环境的一种方式,而不是试图确保安全。顶级域,我们称之为dev.com,未使用,但开发人员将每个站点设置在他们自己的特定子域中。所以我们可以说有site1.comsite2.com并且site3.com,然后开发商georgenico将有完整的URL,如:

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

我最初认为通配符自签名证书可以,但后来发现*.dev.com仅适用于something.dev.com子域而不适用于子子域。我决定按照此答案中的说明进行操作。当我使用:

DNS.1 = www.site2.com.nico.dev.com
DNS.2 = www.site1.com.george.dev.com
Run Code Online (Sandbox Code Playgroud)

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

DNS.1 = dev.com
DNS.2 = www.site1.com.george.dev.com
DNS.3 = *.*.*.nico.dev.com
Run Code Online (Sandbox Code Playgroud)

虽然DNS.2有效,DNS.3但没有,NET::ERR_CERT_COMMON_NAME_INVALID在 Chrome 中给我错误。

有没有办法做到这一点,还是我必须生成一个很长的DNS.x条目列表来涵盖所有站点?

我听说通过创建我自己的 CA 这将是可能的。我遵循了这个答案的重要说明。用我自己的CA完好我创建了一个证书DNS.1一样的通用名称和DNS.2DNS.3的,象这样的通配符:

DNS.1 = dev.com
DNS.2 = *.dev.com
DNS.3 = *.*.*.*.nico.dev.com
Run Code Online (Sandbox Code Playgroud)

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

所以看起来通配符的第一级工作正常,但在此之下,它没有。这对于 Chrome 和 IE(使用 Windows 证书)和 Firefox(管理自己的证书)是相同的。

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

小智 2

您只能拥有一级通配符。

*.example.com 将覆盖 everything.example.com,但不覆盖 one.anything.example.com。

*.subdomain.example.com 将处理任何内容.subdomain.example.com。

  • @LeonardChallis参见http://serverfault.com/questions/104160/wildcard-ssl-certificate-for-second-level-subdomain和http://stackoverflow.com/questions/5295521/problems-with-ssl-and-multi -级别子域。另请参阅 https://cabforum.org/baseline-requirements-documents/ 上的基准要求,其中将通配符证书定义为 FQDN **最左侧位置**中的星号 (\*)。(扩展验证要求不允许使用**任何**通配符。) (2认同)