我正在尝试解析 SSL 客户端的一些输出,以检查一组服务器是否具有有效的证书。我正在查看该命令的输出:
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -subject -dates
Run Code Online (Sandbox Code Playgroud)
我注意到 Let's Encrypt 颁发的通配符证书仅在“主题”字段中列出“CN = example.com”,而其他 CA 颁发的通配符证书则使用“CN = *.example.com”
这是正常的吗?是否会有一些在“主题”字段中列为“CN = example.com”的证书,这些证书不是通配符,如果我尝试打开“subdomain.example.com”,这些证书会在浏览器中中断?
或者是否有更好的方法来验证命令行上的证书是否适用于正确的域?
谢谢。
证书对证书中包含的主题有效,但当存在任何主题备用名称条目时,它对这些条目有效。
因此,将openssl x509输出仅限于主题是一个不确定的测试。
证书有
Subject: CN=*.example.com
X509v3 Subject Alternative Name:
DNS:*.example.com, DNS:example.com
Run Code Online (Sandbox Code Playgroud)
实际上相当于
Subject: CN=example.com
X509v3 Subject Alternative Name:
DNS:example.com, DNS:*,example.com
Run Code Online (Sandbox Code Playgroud)
尽管主题只能列出一个名称,但这两个证书对于裸域和子域通配符都有效。
据我所知,既没有惯例也没有技术原因来选择上述选项之一而不是另一个,您可以期望看到这两个选项。您看到的内容取决于请求证书的管理员最初使用的选项。
www.example.com当同时使用一个或多个完全不同的域名时,您通常甚至会在请求证书时看到完全不同的主题:
Subject: CN=example.NET
X509v3 Subject Alternative Name:
DNS:example.NET, DNS:*.example.NET, DNS:*.example.com, DNS:example.com
Run Code Online (Sandbox Code Playgroud)
在尚不支持该选项的旧版 openssl 中,显示 SAN 条目并非完全微不足道-ext subjectAltName: https: //stackoverflow.com/q/20983217
是否会有一些
CN = example.com在“主题”字段中列出的证书不是通配符,如果我尝试打开“subdomain.example.com”,这些证书会在浏览器中中断?
服务器名称指示 (SNI)的出现意味着服务器不仅限于使用单个 TLS 证书,还可以配置多个证书,每个证书对不同的 DNS 名称、DNS 通配符以及可能的 IP 地址有效。
事实上,当您使用 SNI 连接时,https://www.example.net:443 证书仅对www.example.net(而不是 SAN 条目)有效,但这并不意味着对不同主机名的请求将导致错误。
在您实际尝试之前,您不会事先知道使用其他名称的 SNI 请求连接到同一服务器是否会导致证书错误。
如果服务器为 subdomain.example.net 配置了单独的附加有效证书,则在您实际请求之前您不会知道https://subdomain.example.net:443
| 归档时间: |
|
| 查看次数: |
1718 次 |
| 最近记录: |