- - PR -
クライアント認証
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-06-22 15:58
基本的な質問だと思うのですが、解決できず藁をもすがる思いで書き込みます。
あるお客様のサーバーに接続するためにクライアント証明書が必須であり、 Javaでクライアントプラグラムを作成したのですが、 Server returned HTTP response code: 403 になり原因が分からず困っています。 元にしたプログラムは JavaTM Secure Socket Extension (JSSE)リファレンスガイドにある SSLSocketClientWithClientAuth.java です。 javax.net.debug=allで確認したところ、クライアント証明書が サーバに送付されていないようです。 key storeには、keytoolを使い、クライアント証明書のルート証明書、中間証明書も importしました。 サーバはIISであり、IISの設定を「クライアント証明書を要求する」から 「クライアント証明書を受諾する」に変更してもらった場合は403エラーには なりませんでした。 またクライアントプログラムをVB .Netで作成した場合は、 403エラーにならなかったので、サーバ側の設定や環境に 問題はないと思っています。 以上、考えられる原因などをご教授いただければ幸いです。 | ||||
|
投稿日時: 2006-06-22 22:42
http://forums.belution.com/ja/java/000/002/77s.shtml のように、とりあえずTrustManagerを実装してみる(ほぼ空で) というのはどうでしょう。 ちなみに、私は一瞬では解決できなかったので、jakartaのHttpClientライブラリ を使って解決した記憶があります。PKCS#12用だったかな? | ||||
|
投稿日時: 2006-06-23 21:19
加納正和さま
早速のご回答ありがとうございます。 試してみます。 | ||||
|
投稿日時: 2006-06-23 22:38
加納正和さま
KAZUです。 お世話になってます。 HttpClientで試してみましたが、同じ現象でした。 TrustManagerはまだ試していません。 プログラムは以下の通りです。 System.setProperty("javax.net.ssl.trustStore", "d:/ssltest/cer/trustStore"); System.setProperty("javax.net.ssl.trustStorePassword", "xxxx"); System.setProperty("javax.net.ssl.keyStore", "d:/ssltest/cer/keyStore"); System.setProperty("javax.net.ssl.keyStorePassword", "xxxx"); System.setProperty("javax.net.debug", "all"); String url = "https://............."; HttpClient httpclient = new HttpClient(); GetMethod httpget = new GetMethod(url); httpclient.executeMethod(httpget); System.out.println(httpget.getStatusLine()); System.out.println(httpget.getResponseBodyAsString()); Key StoreとTrust Storeの登録は以下のとおりです。 VeriSignClass1PublicPrimaryCA.cer:クライアント証明書のルート証明書 ApplicationServiceCA.cer:クライアント証明書の中間証明書 VeriSignJapanClass1CA.cer:クライアント証明書の中間証明書 client_cer.cer:クライアント証明書 ForVerisignAuthTest.cer:ベリサインの無料試用版 SSLのルート証明書です。 keytool -import -trustcacerts -alias VeriSignClass1PublicPrimaryCA -file VeriSignClass1PublicPrimaryCA.cer -keystore keyStore -storepass xxxx keytool -import -trustcacerts -alias VeriSignJapanClass1CA -file VeriSignJapanClass1CA.cer -keystore keyStore -storepass xxxx keytool -import -trustcacerts -alias ApplicationServiceCA -file ApplicationServiceCA.cer -keystore keyStore -storepass xxxx keytool -import -trustcacerts -alias client_cer -file client_cer.cer -keystore keyStore -storepass xxxx keytool -import -trustcacerts -alias ForVerisignAuthTest -file ForVerisignAuthTest.cer -keystore trustStore -storepass xxxx | ||||
|
投稿日時: 2006-06-24 11:34
加納正和さま
KAZUです。 お世話になってます。 Key Storeの設定を以下のようにしたら、解決することができました。 https://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/deployment/deployment-guide/upgrade-guide/article-16.html jakartaのHttpClientでも動作しましたが、HttpsURLConnectionでも正常に動作しました。 色々、ありがとうございました。 |
1