如果用户尝试使用 SSLv3,我想重定向我们网站上的任何用户(如果我只是禁用 SSLv3,并且出现了 IE6 之类的浏览器,我似乎无法正确地将其重定向到我们网站的 http 版本并显示错误消息 - 因此我想允许 SSLv3,但如果他们使用它,则重定向到错误消息)。
我想我想要类似下面的东西:
RewriteCond %{SSL_PROTOCOL} SSLv3
RewriteRule (.*) http://%{SERVER_NAME}/mysite/unsupported_browser.html
不幸的是,%{SSL_PROTOCOL}
似乎总是空的。我在 Centos 6 32 位中使用 Apache 2.2.15。SSL 通常对网站运行良好(即https://mysite/mysite/unsupported_browser.html
运行良好)。
似乎有一堆变量应该可用,但对我来说是空的(http://httpd.apache.org/docs/2.2/mod/mod_ssl.html)。
有人知道我能做什么吗?
答案1
解决方案如下:
RewriteCond %{SSL:SSL_PROTOCOL} ^SSLv3$
RewriteRule (.*) http://%{SERVER_NAME}/unsupported_browser.html [L,R=302]
这对我有用:)
答案2
按照 IBM[1] 的说法,您应该能够查询 ENV:SSL_PROTOCOL_VERSION 环境变量,该变量应该由 mod_ssl 导出。
也就是说,最好[2]只支持 TLSv1 及更高版本,并有一个自定义错误页面来通知他们需要切换到支持 TLS1 或更高版本的浏览器。
[1]:“http://publib.boulder.ibm.com/httpserv/ihsdiag/ssl_questions.html#REWRITESSL“
[2]:更好,因为不必做出计算成本高昂的重写决策,而当转到静态错误页面对服务器而言成本较低时