У меня есть устаревший встроенный HTTP-клиент (очень старый), который поддерживает SSLv3, TLS1.0, TLS1.1 и TLS1.2. Я хочу удалить SSLv3 по соображениям безопасности.
Я перестроил библиотеку openssl и хотел проверить, не использует ли этот веб-клиент SSLv3 во время безопасного HTTP-соединения. Этот клиент также запрограммирован для подключения к определенному веб-серверу в Интернете, который уже НЕ поддерживает SSLv3.
Я попытался проверить, работает ли он, используя прокси между встроенным веб-клиентом и веб-сервером в Интернете.
Настройка:
Веб-клиент <----> Прокси-сервер Squid <----> https://www.loremipsum.com/xxx/xxx
Setting: Webclient -SSLv3 only Squid proxy: -Installed in windows server 2012
-client TLS version --> TLS1.0, TLS1.1, TLS1.2 enabled
-server TLS version --> SSLv3 Only
External web server: -only supports TLS1.0, TLS1.1 and TLS1.2 Expected results: Before removing SSLv3: SSLv3 used in HTTPS connection After removing SSLv3: Webclient cannot connect with handshake failure code in packet Actual result: Before removing SSLv3: **TLS1.0** is used instead of SSLv3 (this part is my problem) After removing SSLv3: TLS1.0 used in HTTPS connection
Любой здесь знает, почему TLS1. 0 используется вместо SSLv3 во время фактического тестирования? Или вы можете порекомендовать какой-либо инструмент, который я могу использовать для подтверждения этого изменения?
Большое спасибо.
По поводу того, почему в вашем тесте используется tls: клиент перебирает доступные ему шифры и сначала пробует самый сильный. Поэтому он всегда будет предпочитать tls, а не ssl3.
Если сайт виден из интернета, вы можете использовать один из тестовых сервисов, например https://testtls.com, чтобы проверить, какой протокол включен/выключен.
Если (как я предполагаю) сервис доступен только внутри сайта, вы можете использовать curl и указать протокол:
curl -vvv --sslv3 https://www.myhost.tld
Вы можете углубиться в детали и указать каждый шифр отдельно: https://curl.se/docs/ssl-ciphers.html
Альтернативой является использование openssl напрямую: (https://www.misterpki.com/openssl-s-client/)
openssl s_client -connect www.host.tdl:443 -ssl3
Обратите внимание, что в обоих случаях вам нужен openssl/curl с ssl3 (более новые версии вообще не имеют ssl)
Что вам нужно настроить в squid, это что-то вроде этого (возможно, вам придется изменить параметры в зависимости от версии openssl):
https_port ... options=SSLv3:NO_SSLv2:NO_TLS1:NO_TLS1_1:NO_TLS1_3
http_port ... ssl-bump options=NO_SSLv3:NO_SSLv2:NO_TLS1:NO_TLS1_1:NO_TLS1_3