我们使用 nginx 提供 Web 服务。
客户端已建立指向其子域的 CNAME 记录:
sub.example1.com
到我们域名上的子域名sub.example2.com
(使用通配符 SSL 证书保护)
目前,当您尝试查看:时sub.example1.com
,会显示错误:
The certificate is not valid (host name mismatch).
并且必须忽略不匹配错误才能继续。
我曾尝试为子域生成 SAN 证书sub.example1.com
并单独提供服务,但他们确实在查看sub.example2.com
,这导致了相同的错误。
我们是否可以将 SAN 添加到通配符证书中以避免这种不匹配错误?
还有其他可能的解决方案来解决不匹配问题吗?
我们是否可以在同一个证书上保护这个辅助子域名或将它们链接起来?
谢谢你!
编辑 主 nginx.conf、sites-enabled/sub.example1.com 和 example2.com 配置示例:http://pastebin.com/7AKLag4w
使用上述配置,我仍然收到主机名证书不匹配错误。
结果curl -I
是:
curl: (60) SSL certificate problem: Invalid certificate chain
sub.example1.com 证书是在letsencrypt
包含sub.example1.com
和sub.example2.com
SAN 的情况下创建的,而是example2.com.crt
由标准颁发机构作为通配符 SSL 证书创建的。
答案1
您需要一个带有客户端 CNAME 的证书,位于 Nginx 中单独的服务器块中。
或者生成另一个包含您的域名、子域名和 CNAME 的证书。Lets Encrypt 可以做到这一点,而且是免费的。
(将评论复制到答案中以便可以被接受,这样人们就不必费心阅读已回答的问题)。