У меня есть приложение, встраивающее Jetty. Я хотел бы использовать аутентификацию сертификата клиента в SSL, и когда я включу это; При запуске запроса я получаю следующее исключение. Но после этого запрос обслуживается должным образом. Это исключение возникает только при доступе из IE или Chrome. Не приходит при доступе из Firefox. У нас есть собственный SSLConnector, расширяющий SslSocketConnector. Я пытаюсь его отладить; но хотел знать, есть ли какое-то конкретное место / код, где я могу начать проверку.
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)
Обновление:
Я включил параметр отладки SSL и получал это исключение при чтении сразу после сообщения ServerHelloDone. Это сообщение, в котором сервер отправляет свой сертификат вместе с запросом сертификата клиента, как я полагаю. Я не уверен, что происходит при первом чтении. Приветствуем любую помощь.
*** 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
Обновление: Я пытаюсь его отладить; но хотел знать, есть ли какое-то конкретное место / код, где я могу начать проверку.
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)
Обновление:
Я включил параметр отладки SSL и получал это исключение при чтении сразу после сообщения ServerHelloDone. Это сообщение, в котором сервер отправляет свой сертификат вместе с запросом сертификата клиента, который я считаю. Я не уверен, что происходит при первом чтении. Приветствуем любую помощь.
*** 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
Обновление: Я пытаюсь его отладить; но хотел знать, есть ли какое-то конкретное место / код, где я могу начать проверку.
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)
Обновление:
Я включил параметр отладки SSL и получал это исключение при чтении сразу после сообщения ServerHelloDone. Это сообщение, в котором сервер отправляет свой сертификат вместе с запросом сертификата клиента, как я полагаю. Я не уверен, что происходит при первом чтении. Приветствуется любая помощь.
*** 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
Обновление: Обновил JDK до последней версии 23 и попробовал включить / отключить два свойства. По-прежнему наблюдается то же поведение.
Подробнее: TLSv1 и SSLv3 включены во всех браузерах. Связь происходит правильно без включенной клиентской аутентификации. С клиентской аутентификацией мы всегда получаем исключение при первом рукопожатии, а следующее выполняется правильно и продолжается без исключений. Использование приставки версии 6.1.14 на стороне сервера