Die Anforderung für das Sicherheitstoken konnte nicht erfüllt werden, da die Authentifizierung beim Deaktivieren von TLS 1.0 fehlgeschlagen ist

8

Ich versuche also, TLS 1.0 und 1.1 auf meinem Server zu deaktivieren. Wenn ich TLS 1.0 abstelle, erhalte ich in meiner Anwendung folgenden Fehler:

%Vor%

Wenn TLS 1.0 aktiviert ist, funktioniert alles einwandfrei.

Jetzt gibt der Code, der den Service aufruft, TLS 1.2 unter Verwendung von ServicePointManager mit dem folgenden Code an: ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

Der Dienst am anderen Ende läuft mit .Net 4.6.2 und gibt kein TLS-Protokoll mit dem ServicePointManager an. Aus dem, was ich gelesen habe, wird automatisch erkannt, welches TLS-Protokoll zur Laufzeit in dieser Version benötigt wird das .net-Framework.

Die Web.config für die WCF-Dienste sind die folgenden in Bezug auf die Bindungen

Aufruf der Konfiguration:

%Vor%

Service-Konfiguration:

%Vor%

Ich kann nicht für das Leben von mir herausfinden, was das Problem hier ist.

Hat jemand eine Idee, warum das beim Ausschalten von TLS 1.0 nicht funktioniert?

    
Jamie Rees 22.11.2017, 15:42
quelle

1 Antwort

2

Wie Sie wissen, ist das Problem, dass SSL3 und TLS1.0 anfällig für POODLE greift an und andere Threads . Also Migration zu .NET 4.5, das TLS 1.1 und TLS 1.2 oder darüber ist eine gute Idee.

Grundsätzlich wird der Client mit dem Server verhandeln und das höchste vom Server bereitgestellte Protokoll verwenden. Solange der Server TLS 1.1 oder TLS 1.2 bereitstellt, verwendet der Client die TLS 1.1 oder 1.2.

Wenn Ihre App .NET 4.0 ist, können Sie immer noch TLS 1.2 verwenden, indem Sie .NET 4.5 auf Ihrem Server installieren. Ihre App muss nicht auf .NET 4.5 neu ausgerichtet werden. Sie können das Protokoll in der .NET 4.0-Anwendung wie folgt ändern (und tun dies bereits):

%Vor%

Eine Einschränkung besteht darin, dass das Upgrade auf .NET 4.5 nicht automatisch das Problem löst. Das liegt daran, dass die Standardprotokoll ist SSL3 / TLS1.0 in .NET 4.0 / 4.5 . Um TLS 1.2 oder TLS 1.1 in .NET 4.5 oder höher zu verwenden, müssen Sie SecurityProtocol (mit dem SslProtocols Enumeration oder die entsprechenden Integer-Werte) vor jedem WebRequest-Aufruf (eigentlich muss dies nur einmal pro AppDomain gemacht werden. Aber es tut nicht weh, es wieder einzustellen).

An erster Stelle wird TLS in Windows von einer Komponente namens SChannel beendet. Die unterstützten Verschlüsselungscodes hängen von der Version von SChannel ab, die vom Betriebssystem abhängt, NICHT von der .NET-Version. z.B. Windows XP unterstützt nur bis zu TLS 1.0. Ref .
Seit Windows Server 2012 und Windows 8.1 TLS 1.2 ist standardmäßig aktiviert . Also, Sie sollten in Ordnung sein.

Es lohnt sich jedoch zu prüfen, ob TLS 1.2 unter Betriebssystemebene und in der Registrierung (betrifft auch IIS (7.x) <) / a>, SQL Server (2012), Reporting-Dienste usw. je nach Build-Version). Das Standardsicherheitsprotokoll hängt vom folgenden Registrierungseintrag ab.

%Vor%

Überprüfen Sie, ob der Registrierungsschlüssel "SchUseStrongCrypto" auf 1 gesetzt ist. Dadurch werden .NET-Apps gezwungen, die Verwendung von SSL3.0 oder TLS1.0 zu vermeiden und immer das stärkste verfügbare Protokoll zu verwenden.

Ich hoffe, das hilft!

    
wp78de 03.12.2017 21:01
quelle

Tags und Links