Я хотел бы перенаправить любых пользователей на нашем сайте, если они попытаются использовать SSLv3 (если я просто отключу SSLv3 и появится браузер, такой как IE6, я не смогу правильно перенаправить его на http-версию нашего сайта с ошибкой message - поэтому я хотел бы разрешить SSLv3, но перенаправить, если они его используют, на сообщение об ошибке).
Думаю, мне нужно что-то вроде следующего:
RewriteCond %{SSL_PROTOCOL} SSLv3
RewriteRule (.*) http://%{SERVER_NAME}/mysite/unsupported_browser.html
К сожалению, %{SSL_PROTOCOL}
всегда кажется пустым. Я использую Apache 2.2.15 в Centos 6 32 бит. SSL нормально работает для веб-сайта (т.е. https://mysite/mysite/unsupported_browser.html
работает отлично).
кажется, есть куча переменных, которые должны быть доступны, но для меня они пусты (http://httpd.apache.org/docs/2.2/mod/mod_ssl.html).
У кого-нибудь есть идеи, что я могу сделать?
Решения для этого:
RewriteCond %{SSL:SSL_PROTOCOL} ^SSLv3$
RewriteRule (.*) http://%{SERVER_NAME}/unsupported_browser.html [L,R=302]
Это работает для меня :)
Согласно IBM [1], вы должны иметь возможность запрашивать переменную среды ENV: SSL_PROTOCOL_VERSION, которую следует экспортировать с помощью mod_ssl.
Тем не менее, может быть лучше [2] поддерживать только TLSv1 и более поздние версии и иметь настраиваемую страницу ошибок, чтобы сообщить, что им необходимо переключиться на браузер, поддерживающий TLS1 или более поздние версии.
[1]: "http://publib.boulder.ibm.com/httpserv/ihsdiag/ssl_questions.html#REWRITESSL"
[2]: Лучше, например, когда вам не нужно принимать решения о перезаписи, требующие больших вычислительных затрат, когда переход на страницу статической ошибки обходится вашему серверу дешевле.