Форсирование TLS 1.2 в Tomcat; перехват несоответствующих запросов и перенаправление

Я использую Tomcat (v 7 и v 8 в зависимости от проекта) с Java. Я хочу заставить Tomcat использовать только TLS 1.2 (точнее, запретить TLS v1.0 или v1.1). В разработке в Eclipse я добавил -Dhttps.protocols=TLSv1.2 в файл eclipse.ini; и я изменил файл server.xml с sslEnabledProtocols="TLSv1.2" sslProtocol="TLSv1.2", Похоже, это сработало, так как когда я запускаю сервер разработки со старой версией Firefox (v 17esr), я получаю следующее сообщение в браузере:

Невозможно безопасно общаться с одноранговым узлом: нет общих алгоритмов шифрования. (Код ошибки: ssl_error_no_cypher_overlap)

Однако это не очень хорошая практика. Это ужасное сообщение об ошибке, которое не говорит пользователю, что не так или как это исправить. Я предпочел бы определить на сервере, что браузер пытается подключиться к устаревшей версии TLS, и перенаправить таких пользователей на страницу, уведомляющую их о необходимости обновить свой браузер, если они хотят использовать сайт.

Одним из способов является использование пользовательского агента, хотя я считаю, что это не элегантно и не обязательно точно - некоторые браузеры предоставляют пользователю контроль над тем, какую версию TLS включить. Браузер может поддерживать TLS v1.2, но он может быть отключен пользователем.

Какова лучшая практика здесь для Java/Tomcat? Есть ли способ сделать это с помощью HttpServletRequest? Я боюсь, что мне придется повторно включить "старые" версии TLS, тем не менее, позволяя пользователю подключаться через HTTPS, а затем определить, что пользователь использует старую версию TLS, и перенаправить.

Спасибо

0 ответов

Другие вопросы по тегам