Delphi w Indy 10: no se puede conectar a través de TLS 1.2 w SSL "Mejores prácticas" en el servidor web

La pregunta: ¿Cómo hacemos que Indy 10 funcione con un servidor web que aplica las últimas prácticas recomendadas SSL de TLS 1.2?

Las mejores prácticas están documentadas por Microsoft: https://technet.microsoft.com/library/security/ms12-006 Esencialmente, una porción de cifrados, usados en múltiples versiones de TLS, se consideran inseguros. Tenga en cuenta que este kb es de mediados de 2013, mucho antes del caniche.

Como práctica recomendada, hay artículos de la comunidad de Delphi relacionados con el ataque BEAST, que también proponen desactivar los cifrados basados en CBC (http://www.atozedsoftware.com/Intraweb/Blog/20120905.EN.aspx)

Resumen de las mejores prácticas: Las principales infracciones de SSL incluyen las vulnerabilidades BEAST y POODLE. El escenario aquí no es nervioso ni estrecho. Este es un punto intermedio del tema "Cómo hacer un cliente SSL verdaderamente moderno y confiable basado en Indy10 + OpenSSL". En resumen, estas infracciones indican que se debe evitar SSL 2/3 y que TLS 1.0 también se considera vulnerable en muchos casos. Muchos cifrados basados en CBC se consideran inseguros.

Debo agregar: Esto no es hipotético. Tuvimos un consultor de prueba de penetración a principios de 2014 (pre-poodle) en su informe de que nuestros servidores de aplicaciones (para nuestra aplicación web) se configurarían solo en TLS 1.2 y que todos los demás protocolos SSL se desactivarían. Este consultor es parte de una gran empresa de seguridad web, y lo asesoran en cada revisión que hacen. Creo que lo que hacen es estándar de la industria.

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

En codigo,se establece indy a: SSLOptions.SSLVersions: = [sslvSSLv23]

y openssl libs: 1.0.1.10 / 1.0.1J

Pruebas con un servidor Win2012-R2, con certificado SSL. Estamos reduciendo progresivamente el SSL en el servidor web para cumplir con las mejores prácticas de SSL más actuales.

Encontramos un problema: Indy 10 no puede conectarse cuando aplicamos las mejores prácticas Y TLS 1.2 solamente.

Los navegadores se conectan bien.

Cómo probamos:

Win2012-R2, Certificación SSL comercial.Uso de la IU "iis crypto" de Nartac Software para modificar la configuración SSL (configuración schannel.dll) en el servidor Win2012 (capturas de pantalla a continuación)

Resultados:

Cuando implementamos solo "Mejores Prácticas", Indy10 puede conectarse bien. Información de registro de OpenSSL:

Estado SSL: "La negociación SSL finalizó correctamente"

Cifrado: nombre = AES256-SHA; descripción = AES256-SHA SSLv3 Kx = RSA Au = RSA Enc = AES (256) Mac = SHA1; bits = 256; versión = TLSv1 / SSLv3;

Pero cuando tomamos lo anterior, Y deshabilitamos TLS 1.0 y TLS 1.1, la aplicación indy ya no puede conectarse. Abrir registros de SSL:

Estado de SSL: "Cliente de escritura SSLv2 / v3 hola A"

Estado SSL: "Servidor de lectura SSLv2 / v3 hola A" Error de socket # 10054 Restablecimiento de la conexión por parte de un igual.

Aquí está la configuración de IIS Crypto: (El botón de Mejores Prácticas a continuación implementa en un clic lo que Microsoft recomienda aquí:https://technet.microsoft.com/library/security/ms12-006 )

Respuestas a la pregunta(1)

Su respuesta a la pregunta