我 有 一个 网站example.com
, 并且www.example.com
只是 一个 CNAME 到example.com
.
example.com
仅具有由 Lets Encrypt 颁发的证书example.com
。
在 Web 服务器 (Nginx) 上,我已将http://example.com
(HTTP 301) 重定向到https://example.com
。
在 macOS 上的 Safari 上,的访问者www.example.com
将收到一条安全警告,提示证书错误,因为它是颁发给example.com
而不是www.example.com
。
在Windows Chrome上,似乎没有这样的警告。
哪一个应该是正确的行为?
答案1
哪一个应该是正确的行为?
Safari 的行为是正确的,尽管我有点困惑为什么 Chrome 没有发出警告,因为根据我的经验,Chrome 历来处于确保整个链上的 HTTPS 内容合法性的前沿。
至于您的证书,如果设置为example.com
而没有设置,www.example.com
那么您将只能从 获得 HTTPS example.com
。如果您尝试使用example.com
www.example.com 的 ,那么浏览器将警告您不匹配。
这是因为——归根结底—— www
inwww.example.com
只是一个历史惯例,而那www
只是一个可以真正指向任何地方的子域名。因此发出警告。正如网站点击SSL明确指出:
SSL 是基于加密的协议。它只保护已颁发证书的域名。因此,如果 SSL 证书是为非 www 域名颁发的,则它只保护该域名。
example.com
因此,如果您想在两个域上使用 HTTPS,那么您肯定需要和 的证书www.example.com
。