Я хотел полностью отказаться от поддержки SSLv3 из-за POODLE, но обнаружил, что некоторые люди все еще переходят из старых браузеров в пользу IE в Windows XP.
Как мне обнаружить этих пользователей, поддерживающих только SSLv3, из nginx и перенаправить их на некоторую вспомогательную страницу с дальнейшими инструкциями?
Мне определенно нужно нет обходных путей чтобы эти пользователи использовали небезопасные браузеры.
И я буду особенно счастлив, если смогу сделать то же самое для всех браузеров, не поддерживающих SNI: SSLv3 не поставляется с SNI, поэтому, если я смогу перенаправить браузеры, не поддерживающие SNI, это также решит проблему SSLv3.
Не говоря уже о том, чтобы оставить SSLv3 включенным, вы можете просто указать nginx на перенаправление в зависимости от того, используется ли протокол SSLv3:
if ($ssl_protocol = SSLv3) {
rewrite ^ /poodle-doodle.html;
}
Вы можете проверить это из оболочки:
$ wget --secure-protocol=SSLv3 -O - $SERVER_URL
# or
$ curl -v -3 $SERVER_URL
Я не эксперт в конфигурации nginx, но должна быть возможность иметь настройку для определенного имени хоста и, кроме того, настройку по умолчанию для всех других запросов. Настройка для хоста на основе имени будет автоматически использоваться с https, если клиент использует SNI и имя хоста, указанное в SNI, соответствует конфигурации. Во всех других случаях, это другое имя хоста, клиенты TLS без SNI и клиенты с SSL 3.0 (который не поддерживает SNI) используется настройка по умолчанию, чтобы вы могли обслуживать там различную информацию. Затем эта настройка по умолчанию может выдавать все предупреждения, которые вы хотите выдавать старым клиентам.
Таким образом, вы также можете использовать разные сертификаты, например, предоставить всем клиентам SNI сертификат, подписанный с помощью SHA-256, а другим - только один, подписанный с помощью SHA-1, потому что эти старые клиенты могут еще не поддерживать SHA-256.
Изменить: согласно комментариям Ксавьера Лукаса, он будет использовать только настройки сертификата из конфигурации по умолчанию (не-SNI), но другие настройки зависят от заголовка Host. Это означает отсутствие другого корня документа для клиентов без SNI.