在我的本地 Mac 机器上,我有以下 apache 配置片段:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://www.example.com
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/my_example.cert
SSLCertificateKeyFile /etc/apache2/ssl/my_example.key
</VirtualHost>
</IfModule>
当我https://example.com
在 Chrome 或 Safari 中打开时没有问题。但是,如果我https://www.example.com
使用 Chrome 打开,则会出现:
NET::ERR_CERT_COMMON_NAME_INVALID
Subject: example.com
Issuer: example.com
在 Safari 中,我只收到一条通用的“无法连接到服务器”消息。我忘记了命令,但您可以检查 .cert 文件的值。对于通用名称,它输出example.com
。这是问题所在吗?该值是否需要通配符?如果需要,当提示制作证书时,如何输入通配符?
另外,永久重定向值应该是多少?是https://example.com
还是有关系吗https://www.example.com
?
答案1
如果您想从一个域上的 https 重定向到另一个域上的 https,您需要一个通配符证书或两个单独的证书。
常规证书仅在主机名完全相同时才匹配。通配符证书将匹配没有子域的域或有任何子域的域。子子域(如https://sub.sub.example.com) 但在大多数浏览器中都不会匹配(直到最近,标准对于这种情况还比较模糊)。