我正在尝试在我的网站上设置 HTTPS/SSL test.example.com
。
我编辑了我的文件,/etc/nginx/sites-enabled/my_site
以便块的顶部server {}
是这样的。
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/cert_chain.crt;
ssl_certificate_key /etc/ssl/example.key;
server_name test.example.com;
error_log /var/log/nginx/debug.log debug;
... Rest of code ...
}
我运行了nginx restart
。但如果我在 Chromium 中访问https://test.testexample.com
,我的浏览器会警告我与该网站的连接不安全。
铬错误:
Your connection is not private
Attackers might be trying to steal your information from test.example.com (for example, passwords, messages, or credit cards). Learn more
NET::ERR_CERT_COMMON_NAME_INVALID
This server could not prove that it is test.example.com; its security certificate is from example.com. This may be caused by a misconfiguration or an attacker intercepting your connection.
我的证书由 Comodo 颁发。我按照 Namecheap 的指南将 SSL 集成到我的网站。步骤 3:https://www.namecheap.com/support/knowledgebase/article.aspx/9419/0/nginx
答案1
NET::ERR_CERT_COMMON_NAME_INVALID ...
此服务器无法证明它是 test.example.com;其安全证书来自 example.com。这可能是由于配置错误或攻击者拦截您的连接造成的。
服务器返回的证书与 URL 中的名称不匹配。根据此描述,您已订购了证书,example.com
但尝试访问的站点并非test.example.com
颁发证书的域。
此问题可能是由于对 URL 中的域名与证书的比较方式存在错误理解所致。一般来说:
- 证书仅对证书的主题备用名称部分中明确提及的域有效(Chrome 会忽略 CN)。这意味着
example.com
不匹配test.example.com
。 - 如果有通配符,则只能有一个
*
,它必须是最左边的标签,并且它只匹配域的单个部分,即,的证书*.example.com
将匹配www.example.com
和,test.example.com
但不匹配www.test.example.com
。