包含两个通配符的 SSL 证书是否有效(尤其是在 Let's Encrypt 上)?

Emo*_*oji 10 ssl-certificate wildcard-subdomain lets-encrypt

我想在(将)由 Let's Encrypt: 签名的 SSL 证书中包含两个通配符*.*.thost3.de。该证书是否会与匹配该规则的任何主机名(例如example.example.thost3.dehello.world.thost3.de)相匹配,并且 Let's Encrypt 是否可以接受他们签署的证书中存在此类通配符?

A.B*_*A.B 10

不,这不应该(在 RFC 中“不应该”的含义)起作用,如RFC 6125(在 Internet 公钥基础设施中使用 X.509 (PKIX) 证书表示和验证基于域的应用程序服务身份)中记录的那样传输层安全(TLS)):

如果客户端将参考标识符与
DNS 域名部分包含通配符
“*”的呈现标识符进行匹配,则适用以下规则:

  1. 客户端不应尝试匹配所呈现的标识符,其中通配符包含除最左侧标签之外的标签(例如,不匹配 bar.*.example.net)。

  2. 如果通配符是所呈现标识符中最左侧标签的唯一字符,则客户端不应与除引用标识符最左侧标签之外的任何内容进行比较(例如,*.example.com 将匹配 foo.example。 com,但不是 bar.foo.example.com 或 example.com)。

[...]

将这两者放在一起:

  • 除了证书的最左边部分(用点分隔)之外,不能有通配符:内部通配符无效。
  • 您不能让通配符证书匹配其左侧的附加标签部分(即:用点分隔):同样,这意味着如果使用有效的单个通配符,则任何具有附加左侧部分的内容都无法匹配(因此 hello.world. thost3.de 无法匹配证书 *.thost3.de)。

您可以做的是颁发包含许多 SAN 部分的证书,这些部分可能本身带有(有效)通配符。但我完全不确定 Let's Encrypt 是否能接受这一点。

编辑:*.stackexchange.com由 Let's Encrypt 与多个具有通配符的 SAN 进行签名。

例子:

$ openssl s_client -connect stackexchange.com:443 </dev/null 2>/dev/null| openssl x509 -noout -text | grep -A1 'X509v3 Subject Alternative Name' | tr ',' '\n'
            X509v3 Subject Alternative Name: 
                DNS:*.askubuntu.com
 DNS:*.blogoverflow.com
 DNS:*.mathoverflow.net
 DNS:*.meta.stackexchange.com
 DNS:*.meta.stackoverflow.com
 DNS:*.serverfault.com
 DNS:*.sstatic.net
 DNS:*.stackexchange.com
 DNS:*.stackoverflow.com
 DNS:*.stackoverflow.email
 DNS:*.superuser.com
 DNS:askubuntu.com
 [...]
Run Code Online (Sandbox Code Playgroud)