![apache2 中具有永久重定向和 www 子域的自签名证书](https://linux22.com/image/1471386/apache2%20%E4%B8%AD%E5%85%B7%E6%9C%89%E6%B0%B8%E4%B9%85%E9%87%8D%E5%AE%9A%E5%90%91%E5%92%8C%20www%20%E5%AD%90%E5%9F%9F%E7%9A%84%E8%87%AA%E7%AD%BE%E5%90%8D%E8%AF%81%E4%B9%A6.png)
在我的本地 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) 但在大多数浏览器中都不会匹配(直到最近,标准对于这种情况还比较模糊)。