我正在尝试不使用重写规则进行重定向,例如https://www.domain.com到https://www.domain.net。我有一个 *.domain.net 的通配符证书。这会在我的 error_log 中产生以下警告
[警告] RSA 服务器证书通配符 CommonName (CN) `*.domain.net' 与服务器名称不匹配!?
这很有道理,我明白为什么会出现警告。我想问一下是否有办法使用 Redirect 指令来完成上述操作而不会出现警告。这是我在 ssl.conf 中的虚拟主机:
<VirtualHost *:443>
SSLEngine on
ServerName www.domain.net
DocumentRoot /var/www/html/domain
SSLOptions -FakeBasicAuth -ExportCertData +StrictRequire +OptRenegotiate -StdEnvVars
SSLStrictSNIVHostCheck off
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
ServerName www.domain.com
ServerAlias www.domain.info
Redirect permanent / https://www.domain.net
</VirtualHost>
另外,如果有解决方案,是否可以用于从 htps://domain.com 重定向到 htps://www.domain.com?非常感谢!
答案1
请注意,底层 HTTPS 连接的 SSL 握手和验证过程发生在前发送实际请求。这意味着在验证服务器证书的真实性之前,服务器不会做出任何 HTTP 响应,甚至不会进行重定向。
如果你只有一个端点(即只有 1 个公共 IP 地址),则需要购买 SAN 证书,即具有主题备用名称。
*.domain.net
这样,您就可以获得带有 SAN 的通配符证书www.domain.com
,并且不会收到任何证书警告
如需了解更多信息,请查看我给出的一个旧答案对于类似的情况,只需nginx
用apache
答案2
www.domain.com
(就此而言www.domain.info
)与 不是同一个域www.domain.net
,因此出现警告。如果您需要避免此警告,您也应该拥有这些域的证书。
答案3
来自另一个问题(https://stackoverflow.com/a/53424202/2590491):
我的解决方案是:httpS://www.example.com
--> http://www.example.net
-->httpS://www.example.net
<VirtualHost *:80>
ServerName www.example.net
Redirect "/" "https://www.example.net/"
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
#### The Tricky ####
Redirect "/" "http://www.example.net/"
SSLEngine on
# SSLProxyEngine On
SSLCertificateFile /path/example_com.crt
SSLCertificateKeyFile /path/example_com.key
SSLCertificateChainFile /path/DigiCertCA_example_com.crt
SSLProtocol ALL -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.net
...
SSLEngine on
# SSLProxyEngine On
SSLCertificateFile /path/example_net.crt
SSLCertificateKeyFile /path/example_net.key
SSLCertificateChainFile /path/DigiCertCA_example_net.crt
SSLProtocol ALL -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
</VirtualHost>