- - PR -
HttpClientでのクライアント認証について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-02-23 20:01
お世話になります。
HttpClientでのクライアント認証について質問です。 現在、以下の環境にてクライアント認証を試そうとしてるのですがエラーになってしまいます。。 ■環境 java6 tomcat6 HttpClientは、apachecommonsのcommons-httpclient-3.1.jarを使用しています。 証明書の設定を下記のようにしています。 tomcat6のserver.xmlを変更。
%JAVA_HOME%\\jre\\lib\\security\\cacertsにサーバ証明書をインポート済 クライアント側のソース
■エラー内容 java.net.SocketException: Software caused connection abort: recv failed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at com.sun.net.ssl.internal.ssl.InputRecord.readFully(InputRecord.java:293) at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:331) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:789) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.waitForClose(SSLSocketImpl.java:1435) at com.sun.net.ssl.internal.ssl.HandshakeOutStream.flush(HandshakeOutStream.java:103) at com.sun.net.ssl.internal.ssl.Handshaker.sendChangeCipherSpec(Handshaker.java:612) at com.sun.net.ssl.internal.ssl.ClientHandshaker.sendChangeCipherAndFinish(ClientHandshaker.java:808) at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:734) at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:197) at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:516) at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:454) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1096) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:623) at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) at java.io.FilterOutputStream.flush(FilterOutputStream.java:123) at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:506) at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114) at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096) at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398) at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323) at client.httpclientTest.main(httpclientTest.java:55) クライアント証明書をサーバ側で受け取りたいのですが、接続時にエラーになってしまいます。 設定が間違っているのでしょうか。 よろしくお願いします。 | ||||||||
|
投稿日時: 2009-02-24 09:17
ブラウザやOpenSSLのs_clientで接続した場合はどうなりますか? サーバ側のログに何か残っていませんか? | ||||||||
|
投稿日時: 2009-02-24 10:27
https://localhostが表示出来ていませんでした。
これが原因でしょうか・・・ clientAuth="true"を"false"にすると表示出来るのですが、 clientAuth="true"にした場合の設定が違っているのでしょうか。 因みに、tomcat4ではうまく出来ていました。 | ||||||||
|
投稿日時: 2009-02-24 13:43
■結論
tomcatの設定が間違っていました。 server.xmlの設定
tomcat-users.xmlを追加で正常に動作しました。 |
1