Apache 从 https 重定向到 https

Apache 从 https 重定向到 https

我正在尝试不使用重写规则进行重定向,例如https://www.domain.comhttps://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,并且不会收到任何证书警告

如需了解更多信息,请查看我给出的一个旧答案对于类似的情况,只需nginxapache

答案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>

相关内容