114 votes

Mettre à jour le service Web .NET pour utiliser TLS 1.2

- Je besoin pour utiliser le protocole TLS 1.2 pour se connecter à partir de mon .NET web service à l'autre qui va de la force de TLS 1.2. J'ai trouvé une ressource qui dit .NET de 4,6 utilise le protocole TLS 1.2 par défaut, de sorte que sonnait comme la solution la plus simple. J'ai mis à jour le .NET framework sur le serveur et redémarré. Dans IIS, j'ai essayé de faire un pool d'applications à l'aide .NET de 4,6 mais 4.0 était la seule option. Ensuite, j'ai trouvé quelque chose qui a déclaré qu'il allait encore dire 4.0, car 4.6 est une "en place" mise à jour .NET 4.0. J'ai donc pensé que j'avais peut-être fait. Toutefois, sur une page d'erreur que j'ai eu pour des raisons, dit-il Microsoft .NET Framework Version:4.0.30319 il semble donc que je n'ai pas mis à jour avec succès. Tous les pointeurs sur la façon de veiller à ce que mon pool d'applications est à l'aide .NET de 4,6, ou, plus généralement, comment activer TLS 1.2?

161voto

Etienne Faucher Points 1400

En fait nous sommes juste mis à niveau .NET web service à 4,6 pour permettre TLS 1.2.

Ce Artem est à dire ont été les premières mesures que nous avons fait. Nous avons recompilé le cadre du service web à 4,6 et nous avons essayé de changer la clé de registre pour activer TLS 1.2, bien que cela n'a pas fonctionné: la connexion a été encore dans TLS 1.0. Aussi, nous ne voulons pas interdire le protocole SSL 3.0, TLS 1.0 ou TLS 1.1 sur la machine: d'autres services web pourrait être de l'utiliser; nous rolledback nos modifications sur le registre.

Nous avons effectivement changé le Web.Les fichiers de configuration de dire IIS: "hé, exécutez m'en 4,6 s'il vous plaît".

Voici les modifications que nous avons ajouté dans le web.config + recompilation dans .NET 4.6:

<system.web>
    <compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 -->

    <!--Added this httpRuntime -->
    <httpRuntime targetFramework="4.6" />

    <authentication mode="Windows"/>
    <pages controlRenderingCompatibilityVersion="4.0"/>
</system.web>

Et la connexion changé de TLS 1.2, parce que ce dernier est maintenant en cours d'exécution du service web 4.6 (dit explicitement) et 4.6 est à l'aide de TLS 1.2 par défaut.

112voto

John Wu Points 2633

Ajoutez le code suivant avant d'instancier votre client de service Web:

 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
 

Ou pour une compatibilité ascendante avec TLS 1.1 et versions antérieures:

 System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12; 
 

31voto

bresleveloper Points 792

Si vous utilisez .Net avant la version 4.5, Tls12 ne figure pas dans l'énumération, donc l'état est explicitement mentionné ici.

 ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
 

17voto

Artem Points 1266

Trois étapes nécessaires:

  1. Marquer explicitement SSL2.0, TLS1.0, TLS1.1 forbidden sur votre machine serveur, en ajoutant Enabled=0 et DisabledByDefault=1 de votre base de registre (le chemin d'accès complet est - HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols). Voir l'écran pour plus de détails registry

  2. Activer explicitement TLS1.2 en suivant les étapes 1. Suffit d'utiliser Enabled=1 et DisabledByDefault=0 respectivement.

REMARQUE: vérifiez que la version du serveur: Windows Server 2003 ne prend pas en charge l' TLS 1.2 protocole

  1. Activer TLS1.2 seulement sur l'app niveau, à l'instar de @John Wu suggéré ci-dessus.

    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

Espérons que ce guide vous aide.

Mise à JOUR Comme @Subbu mentionné: le guide Officiel

6voto

SRM Points 192

Pour moi ci-dessous travaillé:

Étape 1: Téléchargé et installé le programme d'installation web exe à partir d' https://www.microsoft.com/en-us/download/details.aspx?id=48137 sur le serveur d'applications. Redémarré le serveur d'application après l'installation a été achevée.

Étape 2: ajouter ci-dessous les changements dans le web.config

<system.web>
    <compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 -->
    <!--Added this httpRuntime -->
    <httpRuntime targetFramework="4.6" />
</system.web>

Étape 3: Après avoir terminé l'étape 1 et 2, il a donné une erreur, "WebForms UnobtrusiveValidationMode nécessite un ScriptResourceMapping pour 'jquery'. S'il vous plaît ajouter un ScriptResourceMapping nommé jquery(sensible à la casse)" et pour résoudre cette erreur, j'ai ajouté ci-dessous clés dans appsettings dans mon web.config fichier

<appSettings>
      <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X