В чем разница между ключами реестра DisabledByDefault и Enabled SSL/TLS в Microsoft Windows?

Корпорация Майкрософт предоставляет руководство по оптимальной практике для безопасности транспортного уровня (TLS). Этот документ описывает ключи реестра, которые могут включать или отключать определенный протокол.

https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls

Например, чтобы включить TLS 1.2, вы можете добавить следующие ключи реестра.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:FFFFFFFF

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:FFFFFFFF

В чем разница между DisabledByDefault а также Enabled? Они кажутся излишними.

2 ответа

Решение

В SCHANNEL_CRED структура, которая передается AcquireCredentialsHandle как часть настройки безопасного канала, вы можете вручную выбрать протоколы для поддержки, в grbitEnabledProtocols поле битовой маски.

Таким образом, Enabled определяет, какие протоколы вы можете включить здесь, пока DisabledByDefault указывает, включен ли протокол, если вы пропустите это поле (т.е. оставьте его как 0).

В примечании к полю сказано, что его не рекомендуется использовать в новом коде. Таким образом, эти два значения реестра почти избыточны:

Для новой разработки приложения должны быть установлены grbitEnabledProtocols обнулить и использовать версии протокола, включенные в системе по умолчанию.

Этот элемент используется только пакетом безопасности Microsoft Unified Security Protocol Provider.

Параметры глобального системного реестра имеют приоритет над этим значением. Например, если SSL3 отключен в реестре, его нельзя включить с помощью этого члена.

Неясно, что произойдет, если вы попытаетесь использовать не включенный протокол. Судя по последнему абзацу и отсутствию каких-либо AcquireCredentialsHandle Код ошибки для этого случая, я думаю, это, вероятно, игнорируется.

DisabledByDefault и Enabled не являются избыточными

когда DisabledByDefault установлен флаг 1, SSL / TLS версии X по умолчанию не используется. Если приложение SSPI запрашивает использование этой версии SSL / TLS, оно будет согласовано. Короче говоря, SSL не отключается при использовании DisabledByDefault флаг.

когда Enabled установлен флаг 0, версия X SSL / TLS отключена и не может быть установлена ​​ни одним приложением SSPI (даже если DisabledByDefault флаг установлен в 0).

Для получения дополнительной информации документация Microsoft описывает, какая версия SSL поддерживается или нет, и как ее отключить.

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