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


10

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

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

RewriteEngine On

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

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

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


1
我认为您已经发现,在进行任何HTTP请求之前都要先协商SSL。我认为您将无法按预期运行它,但是我投票决定迁移到ServerFault.com,以防那里的人有更好的答案。
2012年

看来这可能很难实现。丢失在互联网上建立的链接真是一个无赖,更糟糕的是,访问者认为该网站已被破坏或消失。

Answers:


16

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

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

因此这是不可能的。如果要响应https链接,则需要ssl证书。


4

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

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

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


对,这样更好。太糟糕了,没有任何方法可以将批准的替代设置为网站所有者。

-2

您应该在.htaccess中创建

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

谢谢你的建议。即使在.htaccess中有此错误,它也不会使用我为该错误输入的500错误页面。似乎由于最初的错误,.htaccess中的任何内容都未激活。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.