Apache HTTP Fallback при сбое SSL Handshake

У меня очень специфический вариант использования. Я хочу, используя Apache, проверить, способен ли браузер пользователя использовать современные CipherSuites.

Apache вызывается по протоколу https и должен попытаться установить SSL-соединение, в случае сбоя Apache должен перенаправить пользователя на резервный HTTP-сайт, где ему сообщают, что его браузер устарел.

Конечно, мне нужно использовать mod_rewrite, который даже имеет переменную https, которая содержит вкл / выкл, в зависимости от того, установлен ли SSL. Но как я могу сказать apache продолжать, если исходное SSL рукопожатие не удается?

1 ответ

клиент должен попытаться установить соединение SSL, в случае неудачи Apache должен перенаправить пользователя на резервный HTTP-сайт, где ему сообщают, что его браузер устарел.

Я думаю, что вы не можете, рукопожатие TLS потерпит неудачу на стадии задолго до стадии, когда клиент и веб-сервер могут обмениваться сообщениями протокола HTTP.

Вместо:

  1. Принять все шифры.
  2. И заказать их от сильных к слабым с SSLCipherSuite ... директивы.
  3. Не позволяйте клиенту определять предпочтения шифра, а согласовывайте их в порядке предпочтений, который вы определили на шаге 2. с SSLHonorCipherOrder on директивы.
  4. Это должно привести к соединению с самым надежным шифром, который поддерживает клиент. (теоретически ваш фактический пробег может отличаться.)
  5. Если этот шифр ниже вашего порога, тогда примените логику, чтобы показать ваше сообщение безопасности.
  6. Защитите контент, который действительно нуждается в надежном шифре, как описано в руководстве

то есть что-то вроде:

# be liberal in general
SSLCipherSuite ALL:!aNULL:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP:+eNULL
SSLHonorCipherOrder on

<Location "/strong/area">
# but https://hostname/strong/area/ and below
# requires strong ciphers
SSLCipherSuite HIGH:!aNULL:!MD5
</Location>
Другие вопросы по тегам