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.
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.
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
).
DisabledByDefault
sur 1
pour les protocoles désactivés également, en plus de définir Enabled
sur 0
. Donc il semble que DisabledByDefault
soit utilisé sans condition pour générer automatiquement la valeur de ce champ s'il est omis. 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é.
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.