私はJettyを埋め込んでいるアプリケーションを持っています。私はSSLでクライアント証明書認証を使用したいと思います。要求の開始時に次の例外が発生しています。しかし、その後、リクエストは適切に処理されています。この例外は、IEまたはChromeからアクセスされた場合にのみ発生します。 Firefoxからアクセスしたときには表示されません。 SslSocketConnectorを拡張したカスタムSSLConnectorがあります。私はそれをデバッグしようとしています。チェックを開始できる特定の場所/コードがあるかどうかを知りたがっています。要求の開始時に例外が発生しました - 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)
更新:
私は、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は、すべてのブラウザで有効です。クライアント認証が有効になっていなければ、通信は適切に行われています。クライアントの認証では、常に最初のハンドシェイクで例外が発生し、次は正常に処理され、例外なく処理されます。サーバー側でjettyバージョン6.1.14を使用
@Danによると、 'javax.net.debug'システムプロパティを' all'または 'debug'に設定する必要があります。ほとんどのJavaランチャーでは、-Djavax.net.debug = all'を引数に追加するだけです。 –