Tengo una aplicación que integra Jetty. Me gustaría utilizar la autenticación de certificado de cliente en SSL y cuando lo habilite; Recibo la siguiente excepción al inicio de la solicitud. Pero la solicitud se está atendiendo correctamente después de eso. Esta excepción solo se obtiene cuando se accede desde IE o Chrome. No viene cuando se accede desde Firefox. Tenemos nuestro SSLConnector personalizado que extiende SslSocketConnector. Estoy intentando depurarlo; pero quería saber si hay algún lugar/código específico donde pueda comenzar a verificar.Excepción al inicio de la solicitud: ClientAuth SSL
javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:808)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1112)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1139)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1123)
at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:631)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:451)
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:333)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:789)
Actualización:
He activado la opción de depuración de SSL y estaba recibiendo esta excepción en una lectura inmediatamente después del mensaje ServerHelloDone. Este es el mensaje donde el servidor envía su certificado junto con la solicitud del certificado del cliente, creo. No estoy seguro de lo que está sucediendo en la primera lectura. Cualquier ayuda es muy apreciada.
*** ClientHello, TLSv1
****
%% Created: [Session-1, TLS_RSA_WITH_AES_128_CBC_SHA]
*** ServerHello, TLSv1
*** Certificate chain
***
*** CertificateRequest
Cert Types: RSA, DSS
Cert Authorities:
*** ServerHelloDone
WRITE: TLSv1 Handshake, length = 703
received EOFException: error
handling exception: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
Actualización: Actualizado JDK a más tardar, el 23 y el tratado con las dos propiedades activado/desactivado. Todavía obteniendo el mismo comportamiento.
Más información: TLSv1 y SSLv3 están habilitados en todos los navegadores. La comunicación está sucediendo correctamente sin la autenticación de cliente habilitada. Con la autenticación del cliente, siempre obtenemos una excepción en el primer apretón de manos y la siguiente se realiza correctamente y continúa sin excepciones. Uso de la versión de embarcadero 6.1.14 en el lado del servidor
Como dijo @Dan, deberá establecer la propiedad del sistema 'javax.net.debug' en' all' o 'debug'. Para la mayoría de los lanzadores de Java, simplemente agrega -Djavax.net.debug = all' a los argumentos. –