SSL / TLS: el resultado de la validación de la cadena del certificado es "Tipo de autenticación no válido: DHE_RSA"

0

Tengo una aplicación que se conecta a un servicio web remoto implementado en HTTPS. Nuestra aplicación utiliza FIPS-140 Level-1 para conectividad SSL / TLS, y se basa en los proveedores de JCE de RSA (la compañía).

com.rsa.jsse.JsseProvider.JsseProvider()
RsaJsse version 6.14

com.rsa.jsafe.provider.JsafeJCE.JsafeJCE()
JsafeJCE version 6.11

Recientemente, el equipo del servicio web realizó cambios en su extremo para habilitar los cifrados DH. Después de ese cambio, el cifrado que se selecciona para SSL es TLS_DHE_RSA_WITH_AES_256_GCM_SHA384. Sin embargo, la validación de la cadena de certificados parece fallar con la siguiente excepción:

java.lang.IllegalArgumentException: Invalid authentication type: DHE_RSA
    at com.rsa.sslj.x.cj.checkClientTrusted(Unknown Source)
    at com.example.MyX509TrustManager.checkServerTrusted(ReloadableX509TrustManager.java:65)
    at com.rsa.sslj.x.aE.a(Unknown Source)
    at com.rsa.sslj.x.bg.a(Unknown Source)
    at com.rsa.sslj.x.bg.a(Unknown Source)
    at com.rsa.sslj.x.bg.a(Unknown Source)
    at com.rsa.sslj.x.aH.a(Unknown Source)
    at com.rsa.sslj.x.aH.a(Unknown Source)
    at com.rsa.sslj.x.ap.c(Unknown Source)
    at com.rsa.sslj.x.ap.a(Unknown Source)
    at com.rsa.sslj.x.ap.j(Unknown Source)
    at com.rsa.sslj.x.ap.i(Unknown Source)
    at com.rsa.sslj.x.ap.h(Unknown Source)
    at com.rsa.sslj.x.aS.startHandshake(Unknown Source)
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:261)
    at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:118)

¿Alguien puede guiarme, por favor, cuál es el significado de "Tipo de autenticación no válido: DHE_RSA"? Antes de la habilitación de cifrado DH en el servicio web de back-end, este tipo de autenticación solía ser "RSA", y nunca tuvimos ningún problema.

Leí en los comentarios de esta pregunta que este error puede venir si el algoritmo no está aprobado por FIPS-140. ¿Puede ser el caso aquí?

Tenga en cuenta que el método com.example.MyX509TrustManager.checkServerTrusted no hace nada especial: está escrito para omitir la validación de la cadena de certificados en ciertos casos especiales; de lo contrario, delegará en java.net.ssl.TrustManager#checkClientTrusted . En este caso, TrustManager es una instancia de una clase RSA cuyo nombre Está ofuscado en los tarros RSA.

ACTUALIZAR :

Parece que com.rsa.sslj.x.cj.checkClientTrusted espera que el algoritmo utilizado en la clave pública sea DHE_RSA , ya que el algoritmo utilizado en la cadena de certificados del servicio web remoto es RSA ; informa de un error que dice Invalid authentication type . El equipo de servicio web remoto había agregado recientemente dhparam a su configuración SSL a evitar la vulnerabilidad de logjam , pero no han realizado ningún cambio en su certificado. No estoy seguro de por qué nuestro cliente SSL comenzó a fallar en la conexión con el servicio remoto desde entonces, y ¿hay algo que deba hacer para que nuestra aplicación o el equipo de servicios web remotos necesite algo? Cualquier entrada en este sentido será de gran ayuda

    
pregunta Wand Maker 28.04.2017 - 11:51
fuente

1 respuesta

2

Su personalizado checkServerTrusted no debe reenviarse al estándar checkClientTrusted , sino al estándar checkServerTrusted . El authType para el servidor es un nombre de intercambio de claves, pero para el cliente es un nombre de algoritmo: ESTAS NO SON EN GENERAL LO MISMO y en el caso de que las haya encontrado, deben ser diferentes.

FIPS140 solo especifica y restringe algoritmos, no construcciones de alto nivel como cambios de clave TLS, conjuntos de cifrado y protocolos. DH está aprobado (por 800-56A) solo con algunas restricciones que no funcionan para TLS, pero está permitido para un caso que cubre DHE_RSA por la Guía de Implementación FIPS1402 D.8 y aparece como implementado de esa manera en casi su versión JSAFE en CMVP # 2057. OTOH SP800-52 restringe TLS para la mayoría de los mismos sistemas que FIPS140, y r1 en 2014 no permite DHE_RSA, pero el número 2057 es anterior a 2014. Así que estoy bastante seguro de que no hay ningún problema FIPS aquí.

    
respondido por el dave_thompson_085 29.04.2017 - 10:29
fuente

Lea otras preguntas en las etiquetas