如何在服务器错误之前从 HTTPS 重定向到 HTTP?

如何在服务器错误之前从 HTTPS 重定向到 HTTP?

我曾经运营过一个使用 SSL 证书的网站,但现在已经停止使用 SSL 证书。问题是该网站的大多数外部链接都使用 https:// 前缀。

我已尝试在 .htaccess 文件中将 https:// 重定向到 http://:

RewriteEngine On

RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI}

但正如其他地方指出的那样,服务器似乎在激活重定向之前尝试检索证书。因此,在重定向完成之前会显示错误。错误要么是证书已过期的警告,要么是如果我删除证书签名请求,则会出现 SSL 收到的记录超出最大允许长度的错误。

有什么方法可以让传入链接正确重定向?

答案1

http和https的区别在于https请求是通过ssl加密连接发送的,浏览器在发送http请求之前必须先在浏览器和服务器之间建立ssl加密连接。

Https 请求实际上是通过 SSL 加密连接发送的 http 请求。如果服务器拒绝建立 SSL 加密连接,则浏览器将无法通过连接发送请求。浏览器和服务器将无法相互通信。浏览器将无法发送它想要访问的 URL,服务器也无法通过重定向到另一个 URL 进行响应。

所以这是不可能的。如果你想响应https链接,那么你需要一个ssl证书。

答案2

不,如果可以在没有真实证书的情况下从 https 重定向到 http,那将是一个重大的安全漏洞。

想象一下,犯罪分子能够以某种方式使银行安全服务器重定向到不安全的连接,而无需该网站的真实 https 证书,这将允许犯罪分子在用户不知情的情况下劫持连接。

我能看到的唯一解决方案是获取一个便宜的证书,然后从 HTTPS 站点(如果没有有效证书,用户就无法访问)对那些外部链接的常规站点进行正常重定向。

答案3

你应该在你的.htaccess中创建

ErrorDocument 500 http://anotherserer.com/errorPage.php

相关内容