web-dev-qa-db-fra.com

Quelle est la différence entre les clés de registre DisabledByDefault et Enabled SSL / TLS sous Microsoft Windows?

Microsoft fournit des conseils sur les meilleures pratiques pour TLS (Transport Layer Security). Ce document décrit les clés de registre qui peuvent activer ou désactiver un protocole spécifique.

https://docs.Microsoft.com/en-us/dotnet/framework/network-programming/tls#configuring-schannel-protocols-in-the-windows-registry

Par exemple, pour activer TLS 1.2, vous pouvez ajouter les clés de registre suivantes.

[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

Quelle est la différence entre DisabledByDefault et Enabled? Ils semblent redondants.

11
Timothy Schoonover

Dans le SCHANNEL_CRED structure c'est-à-dire passé à AcquireCredentialsHandle dans le cadre de la configuration d'un canal sécurisé , vous pouvez éventuellement sélectionner manuellement les protocoles à prendre en charge, dans le grbitEnabledProtocols champ bitmask.

Ainsi, Enabled régit les protocoles que vous pouvez activer ici tandis que DisabledByDefault spécifie si le protocole est activé si vous omettez ce champ (c'est-à-dire, laissez-le comme 0).

La note du champ indique qu'il n'est pas recommandé de l'utiliser dans le nouveau code. Ces deux valeurs de registre sont donc presque redondantes:

Pour les nouveaux développements, les applications doivent mettre grbitEnabledProtocols à zéro et utiliser les versions de protocole activées par défaut sur le système.

Ce membre est utilisé uniquement par le package de sécurité du fournisseur de protocole de sécurité unifié Microsoft.

Les paramètres de registre système global ont priorité sur cette valeur. Par exemple, si SSL3 est désactivé dans le registre, il ne peut pas être activé à l'aide de ce membre.

On ne sait pas ce qui se passe si vous essayez d'utiliser un protocole non activé. A en juger par le dernier paragraphe et n manque de tout code d'erreur AcquireCredentialsHandle pertinent pour ce cas , je suppose qu'il est probablement ignoré.

6
ivan_pozdeev

DisabledByDefault et Enabled ne sont pas redondants

Lorsque l'indicateur DisabledByDefault est défini sur 1, SSL/TLS version X n'est pas utilisé par défaut. Si une application SSPI demande à utiliser cette version de SSL/TLS, elle sera négociée. En résumé, SSL n'est pas désactivé lorsque vous utilisez l'indicateur DisabledByDefault.

Lorsque l'indicateur Enabled est défini sur 0, la version X de SSL/TLS est désactivée et ne peut être négociée par aucune application SSPI (même si l'indicateur DisabledByDefault est défini sur 0).

Pour plus d'informations, documentation Microsoft décrit quelle version SSL est maintenue ou non, et comment la désactiver.

11
Trevor65