2010-09-07 14 views
5

Tengo un problema cuando un cliente (no el mío) se conecta a mi servidor de forma segura.Problema de Java "no hay suites de cifrado en común" al intentar conectarse de forma segura al servidor

Parece que la conexión se rechaza sobre la base de cifras erróneas, pero he verificado que el servidor comparte algunas de las cifras con el cliente.

¿Podría ser un problema con el cifrado desconocido (Desconocido 0x0: 0x60)? Si es así, ¿qué debo hacer para solucionarlo?

registros SSL Java se muestran a continuación:

Listener-https, setSoTimeout(30000) called 
Worker-30, READ: SSLv3 Handshake, length = 63 
*** ClientHello, SSLv3 
RandomCookie: GMT: 1267050437 bytes = { 23, 244, 228, 68, 161, 225, 218, 222, 207, 128, 228, 138, 127, 141, 159, 63, 232, 48, 242, 240, 26, 76, 58, 158, 179, 0, 192, 140 } 
Session ID: {} 
Cipher Suites: [TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_IDEA_CBC_SHA, SSL_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_EXPORT1024_WITH_RC4_56_SHA, Unknown 0x0:0x60, SSL_RSA_EXPORT_WITH_RC4_40_MD5] 
Compression Methods: { 0 } 
*** 
Worker-30, SEND SSLv3 ALERT: fatal, description = handshake_failure 
Worker-30, WRITE: SSLv3 Alert, length = 2 
Worker-30, called closeSocket() 
Worker-30, handling exception: javax.net.ssl.SSLHandshakeException: no cipher suites in common 
Worker-30, called close() 
Worker-30, called closeInternal(true) 
Worker-30, called close() 
Worker-30, called closeInternal(true) 

Gracias, -Ben

Respuesta

10

Agregando a la respuesta de Erickson, si su certificado no usa un par de claves RSA, y en su lugar utiliza un par de claves DSA, ninguna cantidad del paquete de cifrado RSA ayudará a resolver este problema. Tendrá que habilitar las suites de cifrado relacionadas con DSA (generalmente están indicadas por la palabra clave DSS en ellas) y también hacer que el cliente utilice las mismas suites de cifrado.

La razón por la que este caso extremo podría ser su problema se debe al comportamiento predeterminado de la utilidad keytool al generar pares de claves secretas: DSA y no RSA es el algoritmo predeterminado.

+0

Parece que mi servidor usa un almacén de claves que tiene un único certificado con un par de claves DSA. Intentaré cambiar a RSA y ver si eso funciona ahora ... – Ben

+0

@Ben, es bueno saber del progreso. Estado allí, hecho eso :) –

+0

¡Funcionó totalmente! Eres el mejor, he estado lidiando con esto por mucho tiempo. ¡Gracias, gracias, gracias! – Ben

4

Usted dice que algunos de los clientes de sistemas de cifrado están habilitados solicitó en su servidor. ¿Te has conectado exitosamente con uno de ellos? Por ejemplo, pruebe la utilidad s_client de OpenSSL con la opción -cipher especificando solo ese conjunto de cifrado.

Quizás el proveedor no admita todos los cifrados que cree que ha habilitado, o quizás los archivos de jurisdicción de fuerza ilimitada no estén instalados correctamente en su servidor.

Cuestiones relacionadas