Я настроил IIS в Windows Server 2008 R2, чтобы не разрешать TLS 1.0. Я сделал это, установив эти ключи реестра и перезагрузившись:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server\DisabledByDefault set to 1 (as a DWORD)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server\Enabled set to 0 (as a DWORD)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client\DisabledByDefault set to 1 (as a DWORD)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client\Enabled set to 0 (as a DWORD)
На стороне клиента я использую FireFox 48.0 и IE 9 для тестирования. (Я не могу использовать более поздние версии IE, потому что сетевые администраторы заблокировали настройки). Вот как я настраиваю IE для принудительного использования TLS 1.0:
Вот как я настраиваю FireFox для принудительного использования TLS 1.0:
Я использую WireShark для подтверждения используемого протокола. Вот как это выглядит, когда я использую TLS 1.0 в браузере:
Я также использовал команду OpenSSL, предложенную ниже, чтобы подтвердить, что TLS 1.0 все еще используется:
openssl s_client -tls1 -connect mysite.com:443
Если я принудительно использую TLS 1.1 в браузере, WireShark будет выглядеть так:
Проблема в том, что сервер настроен так, чтобы не разрешать TLS 1.0, но когда я настраиваю свой браузер на использование только TLS 1.0, то используется TLS 1.0. Если я сконфигурирую IE так, чтобы он не разрешал использование какой-либо версии TLS, он возвращает ошибку "Internet Explorer cannot display the web page
"чего я и ожидал. Моя цель для предотвращения использования TLS 1.0 сервером, даже если клиент поддерживает только TLS 1.0, поскольку TLS 1.0 имеет уязвимости безопасности. Как я могу заставить IIS прекратить использование TLS 1.0?
Вы можете проверить, будет ли сервер обслуживать TLS 1.0, если потребуется, с помощью следующих openssl команда.
openssl s_client -tls1 -brief -connect example.com:443
Если соединение прошло успешно, вы увидите что-то вроде:
CONNECTION ESTABLISHED
Protocol version: TLSv1
Ciphersuite: DHE-RSA-AES256-SHA
Peer certificate: CN = example.com
Server Temp Key: DH, 8192 bits
Если соединение не удалось, вы увидите:
write:errno=104
Вы можете проверить поддержку других протоколов, выполнив:
TLS v1.1: openssl s_client -tls1_1 -brief -connect example.com:443
TLS v1.2: openssl s_client -tls1_2 -brief -connect example.com:443
SSL v3: openssl s_client -ssl3 -brief -connect example.com:443
Я знаю, что это старый, но это может помочь кому-то другому. Если FIPS включен, он переопределит настройки TLS 1.0 и включит TLS 1.0. Его необходимо отключить, чтобы отключить TLS 1.0. Надеюсь, это кому-то поможет.
Проблема заключалась в том, что SSL фактически обрабатывался балансировщиком нагрузки, а не на сервере, поэтому его пришлось отключить в балансировщике нагрузки.