Delphi w Indy 10: Verbindung über TLS 1.2 mit SSL nicht möglich "Best Practices" auf dem Webserver vorhanden

Die Frage Wie bringt man Indy 10 dazu, mit einem Webserver zusammenzuarbeiten, der die neuesten TLS 1.2 SSL Best Practices erzwingt?

Die Best Practices werden von Microsoft dokumentiert: https: //technet.microsoft.com/library/security/ms12-00 Im Wesentlichen wird ein Chunk von Chiffren, die in mehreren TLS-Versionen verwendet werden, als unsicher angesehen. Beachten Sie, dass diese KB ab Mitte 2013 verfügbar ist, lange vor Pudel.

Als Best Practice gibt es Artikel aus der Delphi-Community zum BEAST-Angriff, in denen auch vorgeschlagen wird, CBC-basierte Chiffren zu deaktivieren http: //www.atozedsoftware.com/Intraweb/Blog/20120905.EN.asp)

Zusammenfassung der Best Practices: Zu den Hauptverstößen gegen SSL zählen die Exploits BEAST und POODLE. Das Szenario hier ist nicht nervös oder eng. Dies ist ein zentrales Thema zum Thema "Wie man einen wirklich modernen, zuverlässigen SSL-Client basierend auf Indy10 + OpenSSL erstellt". Diese Verstöße weisen kurz gesagt darauf hin, dass SSL 2/3 vermieden werden muss, und TLS 1.0 wird in vielen Fällen auch als anfällig angesehen. Viele CBC-basierte Chiffren gelten als unsicher.

Ich sollte hinzufügen: Dies ist nicht hypothetisch. Anfang 2014 hatte ein Berater für Penetrationstests (Pre-Poodle) in seinem Bericht angegeben, dass unsere Anwendungsserver (für unsere Web-App) nur auf TLS 1.2 eingestellt und alle anderen SSL-Protokolle deaktiviert werden sollen. Dieser Berater ist Teil einer großen Web-Sicherheitsfirma und gibt dies bei jeder Überprüfung bekannt. Ich glaube, was sie tun, ist Industriestandard.

Indy 10 Build: gsIdVersion = '10 .6.0.5213 ';

In Code,indy ist gesetzt to: SSLOptions.SSLVersions: = [sslvSSLv23]

und openssl libs: 1.0.1.10 / 1.0.1J

Test mit einem Win2012-R2-Server mit SSL-Zertifikat. Wir setzen das SSL auf dem Webserver nach und nach herunter, um die aktuellsten Best Practices für SSL zu erfüllen.

Wir haben ein Problem festgestellt: Indy 10 kann keine Verbindung herstellen, wenn nur Best Practices UND TLS 1.2 erzwungen werden.

Browsers verbinden sich gut.

Wie wir getestet haben:

Win2012-R2, Kommerzielles SSL-Zertifikat.Verwenden Sie die Benutzeroberfläche von Nartac Software "iis crypto", um die SSL-Konfiguration (schannel.dll config) auf dem Win2012-Server zu ändern (Screenshots unten).

Ergebnisse

Wenn wir nur "Best Practices" implementieren, kann Indy10 problemlos eine Verbindung herstellen. OpenSSL-Protokollinfo:

SSL-Status: "SSL-Aushandlung erfolgreich abgeschlossen"

Cipher: name = AES256-SHA; description = AES256-SHA SSLv3 Kx = RSA Au = RSA Enc = AES (256) Mac = SHA1; Bits = 256; version = TLSv1 / SSLv3;

Aber wenn wir das oben genannte nehmen und TLS 1.0 und TLS 1.1 deaktivieren, kann die Indy-App keine Verbindung mehr herstellen. SSL-Protokolle öffnen:

SSL-Status: "SSLv2 / v3-Schreibclient Hallo A"

SSL-Status: "SSLv2 / v3-Leseserver Hallo A" Socket-Fehler # 10054 Verbindung von Peer zurückgesetzt.

Hier ist die IIS Crypto-Konfiguration: (Die Schaltfläche "Best Practices" unten implementiert mit einem Klick, was Microsoft hier empfiehlt:https: //technet.microsoft.com/library/security/ms12-00 )

Antworten auf die Frage(2)

Ihre Antwort auf die Frage