Ich habe Probleme mit TLS 1.2 auf meinem Windows Server 2012 R2 (Anwendungs-Webserver, IIS), wo ich nicht aufhttps://api.nuget.org/v3/index.jsonüber Internet Explorer, obwohl ich sehe, dass TLS 1.2 aktiviert wurde.
Ich habe einen anderen Server mit demselben Betriebssystem und denselben Betriebssystemupdates (aber ohne IIS) und dieser Server hat keine Probleme beim Zugriff auf die API oder andere Endpunkte mit TLS 1.2.
Auf dem problematischen Server habe ich Folgendes versucht:
- Habe IISCrypto verwendet, um alles zu aktivieren -> Neustart -> FEHLGESCHLAGEN
- Manuelles Ändern der Registrierungseinstellungen gemäß der Microsoft-Dokumentation -https://docs.microsoft.com/en-us/mem/configmgr/core/plan-design/security/enable-tls-1-2- FEHLGESCHLAGEN
- Habe das folgende Skript verwendet, um TLS 1.2 vollständig zurückzusetzen und erneut zu aktivieren - https://www.hass.de/content/setup-microsoft-windows-or-iis-ssl-perfect-forward-secrecy-and-tls-12- FEHLGESCHLAGEN
Mittlerweile habe ich fast drei Tage damit verbracht, die Probleme zwischen diesen beiden Servern zu beheben und herauszufinden, warum ein Windows-Server funktioniert und ein anderer nicht.
Alle Tipps, Schritte zur Fehlerbehebung oder Tools sind herzlich willkommen!
Antwort1
Nach stundenlanger Fehlersuche konnte ich das Problem endlich lösen und die API von unserem Server über TLS 1.2 zugänglich machen.
Wir haben .net Framework auf unserem Server, das Probleme beim Zugriff auf die API hatte. Microsoft empfiehlt, die folgende Registrierung festzulegen, um SystemDefaultTlsVersions zu erzwingen
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
Antwort2
Mein Ruf ist sehr niedrig, deshalb muss ich eine Antwort schreiben.
Die Browsermeldung kann irreführend sein
Sie sollten überprüfen, ob der DNS dasselbe Ziel auflöst und ob der Client irgendeine Art von Proxy erkennt.
Möglicherweise handelt es sich um eine Paketprüfung durch eine Firewall, möglicherweise mit transparentem Proxy.
Überprüfen Sie, welche Antwort Sie mit s_client in OpenSSL erhalten: https://stackoverflow.com/questions/7885785/using-openssl-to-get-the-certificate-from-a-server
Verwenden Sie DeveloperTools im Browser, um einen Blick auf „Netzwerk“ zu werfen und zu sehen, wohin Ihre Anfrage gesendet wurde (möglicherweise über einen Proxy) und welche Antwort Sie erhalten haben.
Deaktivieren Sie einige SSL/TLS-Prüfungen in Powershell: https://stackoverflow.com/questions/34331206/SSL-Warnung mit Powershell-Downloadstring ignorieren
Überprüfen Sie, ob beide die gleiche Netzwerkkonfiguration in Bezug auf IPv6 haben. Vielleicht stellt einer von ihnen deshalb eine Verbindung zu einem anderen Server her.
BEARBEITEN: Führen Sie zumindest die OpenSSL-Prüfung durch, um sicherzugehen, dass Sie das richtige Zertifikat erhalten. Deaktivieren Sie die SSL/TLS-Prüfung für Powershell und testen Sie, um das Problem zu ermitteln.