我启用了基于名称的虚拟主机支持,并在同一IP下运行了多个站点:


myexamplesite0.com myexamplesite1.com myexamplesite2.com

在我的apache配置(/ etc / apache2 / sites-available / default-ssl)中,我有一个重写规则,可以将请求从HTTP重定向到HTTP。



<VirtualHost *:443>
    <IfModule mod_rewrite.c>
        RewriteEngine On

        # Redirect to HTTP
        RewriteCond %{HTTPS} on
        RewriteCond %{HTTP_HOST} !^(www\.)?myexamplesite1\.com [NC]
        RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    </IfModule>
    [...]


如您所见,myexamplesite1.com以外的所有内容都重定向到HTTP版本。

现在的问题是,如果我键入https://myexamplesite2.com,浏览器将首先要求确认蛇油证书(即,requrest落在default-ssl中)。一旦证书被接受,就会重定向到HTTP版本。我就是不明白为什么。

我要先重定向。没有证书的问题。那可能吗?我想念什么?

如果需要的话,我也愿意显示一个不存在的HTTPs站点。

最佳答案

如果我理解正确,则您想在浏览器显示“错误证书/没有CA”警告之前将客户端重定向到HTTP站点。

但这是一个问题... SSL / TLS在网络堆栈中的位置比HTTP低。
只有拥有安全套接字后,HTTP协议才会启动。

所以不行。您将无法做到这一点,否则HTTPS将完全遭到MITM攻击...

关于apache - 从HTTP重定向到Apache中的HTTP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32555233/

10-11 23:15
查看更多