Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Ce billet est créé par
Andrew Marshall, directeur principal du programme de sécurité, sécurité et confiance des clients
Gabriel Monténégro, directeur principal du programme, Core Networking
Niranjan Inamdar, ingénieur logiciel senior, Core Networking
Michael Brown, ingénieur logiciel senior, Internet Information Services
Ivan Pashov, principal responsable de l’ingénierie logicielle, Core Networking
Août 2019
En tant qu’ingénieurs dans le monde entier travaillent pour éliminer leurs propres dépendances sur TLS 1.0, ils rencontrent le défi complexe d’équilibrer leurs propres besoins de sécurité avec la préparation de la migration de leurs clients. À ce jour, nous avons aidé les clients à résoudre ces problèmes en ajoutant la prise en charge de TLS 1.2 aux systèmes d’exploitation plus anciens, en expédiant de nouveaux formats de journalisation dans IIS pour détecter l’utilisation faible de TLS par les clients et en fournissant les conseils techniques les plus récents pour éliminer les dépendances TLS 1.0.
Microsoft est maintenant heureux d’annoncer une nouvelle fonctionnalité puissante dans Windows pour faciliter votre transition vers un monde TLS 1.2+. À compter de KB4490481, Windows Server 2019 vous permet désormais de bloquer l’utilisation de versions TLS faibles avec des certificats individuels que vous désignez. Nous appelons cette fonctionnalité « Désactiver le protocole TLS hérité » et applique efficacement une version TLS et un étage de suite de chiffrement sur n’importe quel certificat que vous sélectionnez.
Désactiver le protocole TLS hérité permet également à un service en ligne d’offrir deux regroupements distincts de points de terminaison sur le même matériel : un qui autorise uniquement le trafic TLS 1.2+ et un autre qui prend en charge le trafic TLS 1.0 hérité. Les modifications sont implémentées dans HTTP.sys, et avec l’émission de certificats supplémentaires, autorisez le routage du trafic vers le nouveau point de terminaison avec la version TLS appropriée. Avant cette modification, le déploiement de ces fonctionnalités nécessiterait un investissement matériel supplémentaire, car ces paramètres n’étaient configurables qu’à l’échelle du système via le Registre.
Détails du scénario de fonctionnalité
Un scénario de déploiement courant comprend un ensemble de matériel dans un centre de données avec des clients ayant des besoins mixtes : certains ont besoin de TLS 1.2 comme minimum appliqué maintenant et d’autres ne sont pas terminés de supprimer les dépendances TLS 1.0. La figure 1 illustre la sélection de versions TLS et la liaison de certificat en tant qu’actions distinctes. Il s’agit de la fonctionnalité par défaut :
Figure 1 : Sélection de version TLS par défaut et fonctionnalité de liaison de certificat
secure.contoso.com dirige vos clients vers un point de terminaison de service prenant uniquement en charge TLS 1.2 et versions ultérieures.
legacy.contoso.com dirige les clients ayant des besoins TLS 1.0 hérités (comme ceux qui migrent encore vers TLS 1.2) vers un point de terminaison qui prend en charge TLS 1.0 pendant une durée limitée. Cela permet aux clients de terminer les tests de préparation pour TLS 1.2 sans interruption de service et sans bloquer les autres clients prêts pour TLS 1.2.
Traditionnellement, vous avez besoin de deux hôtes physiquement distincts pour gérer tout le trafic et fournir l’application de la version TLS, car la maintenance des requêtes TLS avec une version minimale du protocole nécessite de désactiver les protocoles plus faibles via les paramètres de Registre à l’échelle du système. Nous avons rendu cette fonctionnalité disponible plus haut dans la pile, où la session TLS est liée au certificat, afin qu’une version MINIMALE spécifique de TLS puisse être affectée comme décrit dans la figure 2 ci-dessous.
Figure 2 : Désactiver la fonctionnalité TLS héritée appliquant une version TLS minimale pour un certificat sélectionné, Secure.contoso.com.
Conseils sur le déploiement des fonctionnalités
La fonctionnalité Disable Legacy TLS peut être déployée via l’interface utilisateur du serveur IIS (Internet Information Services), via des commandes PowerShell ou des API de HTTP.sys C++.
Option n°1 : Configuration de l’interface utilisateur IIS (disponible dans Windows 10 version 2004 et Windows Server version 2004 et versions ultérieures)
Créez une liaison de site pour le certificat SSL « secure.contoso.com », comme indiqué ci-dessous, puis cochez « Désactiver le protocole TLS hérité », puis cliquez sur OK.
Option n°2 : PowerShell (disponible dans Windows 10 version 2004 et Windows Server version 2004 et versions ultérieures)
Dans PowerShell, vous pouvez référencer des indicateurs SSL comme suit :
[Microsoft.Web.Administration.SslFlags]::DisableLegacyTLS
Il est pratique de créer des variables nommées plus courtes pour elles :
$Sni = [Microsoft.Web.Administration.SslFlags]::Sni
$Sni\_CCS = [Microsoft.Web.Administration.SslFlags]::Sni + [Microsoft.Web.Administration.SslFlags]::CentralCertStore
$CCS = [Microsoft.Web.Administration.SslFlags]::CentralCertStore
$DisableLegacyTLS = [Microsoft.Web.Administration.SslFlags]::DisableLegacyTLS
$storeLocation = "Cert:\\LocalMachine\\My"
Exemple de création d’une liaison de site à un nouveau site et de désactivation du protocole TLS hérité :
$BindingInformation = "\*:443:"
$siteName = "contoso"
$Thumbprint = $certificate.ThumbPrint
New-IISSite avec la valeur de propriété Sslflag DisableLegacyTLS :
New-IISSite $siteName "$env:systemdrive\\inetpub\\wwwroot" "\*:443:secure.contoso.com" https $certificate.Thumbprint $DisableLegacyTLS $storeLocation -passthru
Exemple d’ajout d’une liaison de site à un site existant et de désactivation du protocole TLS hérité :
New-IISSiteBinding -Name "Default Web Site" -BindingInformation $BindingInformation -CertificateThumbPrint $certificate.Thumbprint -Protocol https -SslFlag $DisableLegacyTLS, $CCS -Force -verbose
En outre, vous pouvez résoudre les problèmes et tester cette fonctionnalité avec Netsh :
Ajout d’un nouveau liage :
netsh http ajouter sslcert <paramètres réguliers> désactiverlegacytls=enable
Mise à jour d’une liaison existante :
netsh http update sslcert <regular parameters> disablelegacytls=enable
Vérifiez s’il est défini sur un binding :
netsh http show sslcert <paramètres réguliers>
Veiller à la désactivation des versions TLS héritées : défini/non défini
Option n°3 : API de HTTP.sys C++ (disponible maintenant)
En plus de désactiver le protocole TLS hérité, les ajouts suivants ont été effectués pour HTTP.sys:
HTTP_SERVICE_CONFIG_SSL_PARAM. DefaultFlags prend désormais en charge les nouvelles valeurs suivantes :
HTTP_SERVICE_CONFIG_SSL_FLAG_ENABLE_SESSION_TICKET : Activer/Désactiver le ticket de session pour un point de terminaison SSL particulier.
HTTP_SERVICE_CONFIG_SSL_FLAG_LOG_EXTENDED_EVENTS : activer/désactiver la journalisation des événements étendus pour un point de terminaison SSL particulier. Des événements supplémentaires sont enregistrés dans le journal des événements Windows. Il n’existe qu’un seul événement pris en charge à partir de maintenant qui est enregistré lorsque l’établissement d’une liaison SSL échoue.
HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_LEGACY_TLS : activer/désactiver les versions TLS héritées pour un point de terminaison SSL spécifique. La définition de cet indicateur désactive TLS1.0/1.1 pour ce point de terminaison et limite les suites de chiffrement qui peuvent être utilisées pour les suites de chiffrement HTTP2.
HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_TLS12 : activez/désactivez TLS1.2 pour un point de terminaison SSL particulier.
HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_HTTP2 : activez/désactivez HTTP/2 pour un point de terminaison SSL particulier.
La façon la plus simple d’activer/désactiver cette fonctionnalité par certificat en C++ est avec l’indicateur de HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_LEGACY_TLS fourni par l’API HttpSetServiceConfiguration HTTP.sys.
Lorsque la désactivation du protocole TLS hérité est définie, les restrictions suivantes sont appliquées :
Désactivez les protocoles SSL2, SSL3, TLS1.0 et TLS1.1.
Désactivez les chiffrements DES, 3DES et RC4 (donc seul AES est utilisé).
Désactivez le chiffrement AES avec le mode de chaînage CBC (donc seul AES GCM est utilisé).
Désactivez l’échange de clés RSA.
Désactivez l’échange de clés DH avec une taille de clé inférieure à 2048.
Désactivez les échanges de clés ECDH avec une taille de clé inférieure à 224.
La documentation officielle de ces modifications sur docs.Microsoft.com est à venir.
Étapes suivantes pour l’application de la version TLS
La désactivation du protocole TLS hérité offre de puissantes nouvelles fonctionnalités pour appliquer des seuils de version TLS/ensembles de chiffres sur des associations spécifiques de certificats ou points de terminaison. Il vous oblige également à planifier le nommage des certificats émis avec cette fonctionnalité activée. Voici quelques-unes des considérations suivantes :
Est-ce que je veux que le chemin d'accès par défaut à mon point de terminaison de service impose TLS 1.2 et fournisse un autre certificat en tant que point d'accès secondaire « hérité » pour les utilisateurs qui nécessitent TLS 1.0 ?
Ma certification Contoso par défaut, déjà utilisée, doit-elle désactiver TLS ancien ? Dans ce cas, je dois peut-être fournir un certificat legacy.contoso.com et le lier à un point de terminaison autorisant TLS 1.0.
Comment puis-je communiquer l’utilisation recommandée de ces certificats à mes clients ?
Vous pouvez tirer parti de cette fonctionnalité pour répondre aux besoins de grands groupes de clients : ceux qui ont l’obligation d’utiliser TLS 1.2+ et ceux qui travaillent toujours sur la migration loin de TLS 1.0, sans dépenses matérielles supplémentaires. Outre la disponibilité actuelle de la liaison de version TLS par certificat dans Windows Server 2019, Microsoft va chercher à rendre disponible la désactivation de TLS hérité sur ses services en ligne en fonction de la demande des clients.