Я размещаю веб-сайт на AWS и хочу отключить трафик, исходящий от любого шифра, кроме TLS 1.2. Это легко сделать с помощью ELB, но вы хотите создать собственную «целевую страницу» для тех пользователей, которым необходимо обновить свой браузер, чтобы посетить сайт.
Я нашел эту статью Можно ли показать статическую страницу, если все зарегистрированные экземпляры ELB не работают? который, кажется, предлагает что-то похожее, но не совсем ту же функциональность.
Вы не можете отклонить соединение (из-за отсутствия TLSv1.2) и в то же время принять соединение, чтобы отобразить сообщение об ошибке. Либо вы принимаете это, либо не принимаете, у вас не может быть обоих вариантов.
Однако вы можете принимать все соединения на уровне TCP / SSL и в Apache или в Nginx или в применение проверьте используемый протокол и перенаправьте на страницу с ошибкой, если версия TLS не является TLS 1.2.
В Apache это можно сделать с помощью этого правила mod_rewrite:
RewriteCond %{SSL:SSL_PROTOCOL} !"TLSv1.2"
RewriteRule (.*) http://%{SERVER_NAME}/error_page.html [L,R=302]
Ссылаться на mod_rewrite и mod_ssl для подробностей.
К сожалению, это не работает с AWS ELB, потому что там ваш сервер не общается с клиентом напрямую, а сеанс SSL завершается на ELB. Однако в этом случае вы можете использовать новый AWS Network Load Balancer который пересылает необработанный TCP-трафик на ваши экземпляры EC2 с балансировкой нагрузки, и ваши серверы обязаны согласовывать протокол SSL с клиентами. В этом случае на ваших серверах будет вся информация об используемом протоколе TLS, и вы сможете использовать проверки, как описано выше.
Надеюсь, это поможет :)