- PR -

【情報】SSL通信に障害が出るかも?

投稿者投稿内容
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2004-01-06 11:22
ほむらです。
古い情報ですが偶然発見したので書き込みます。
内容は明日でデジタル証明名の期限が切れるからSSLを利用した
Java系の環境で接続障害が出るかもしれないということらしいです。
#詳細なところはいま読んでいます^^;;;;;

http://java.com/en/download/help/cacerts.jsp
http://sunsolve.sun.com/pub-cgi/retrieve.pl?doc=fsalert%2F57436
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2004-01-06 12:32
この辺が参考記事になるかな。
http://slashdot.jp/developers/03/12/11/089207.shtml?topic=43
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2004-01-06 13:38
ども、ほむらです。
あ〜やっぱり既に既出の問題だったのですね。
スラドでも、取り上げられているとは気が付きませんでした。

特に問題になっていないのだけどいいのかな〜
色々なところで影響するらしいのだけど。。。

現在最新のものなら平気みたいなことが書いて有りましたけど
スラドの書き込みだと1.4.2_03入れてもダメだったとか書き込みがありますね
もう直ったのかな?
keytoolというのがよくわからないのでできればverisignから直接っての避けたいな〜
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-01-06 18:07
unibon です。こんにちわ。

たまに、商用の Web サイト(Java とは無関係でブラウザでアクセスするサイト)で SSL 用のサーバー証明書の期限が切れたまま1〜2日間そのままほったらかしになっているような状況はわりとよく見かけます。ブラウザを使う場合は単に警告のダイアログが出るだけなので、続行できるので害はないのでしょうけど。
#でも、そんな場面で安易に続行すると「年齢認証」とかでも続行してしまいそうで怖いけど。

ブラウザではなく Java の API で証明書にアクセス(あるいは HTTPS でアクセス)している場合に、期限が切れていた場合はどう動くのでしょうか。むげにエラーになってしまうのでしょうか。
debora
会議室デビュー日: 2003/03/20
投稿数: 7
投稿日時: 2004-01-06 18:47
はじめまして。
話題となっている問題の情報を集めております。
いろいろ動作検証を行ってみた結果、JavaクライアントAPから
外部WebサーバへHTTPS通信を行う分には問題なさそうな感じなのですが
本当に問題がないのか確証が持てずに困っています。。。

一般的にあるクライアントがSSL通信でサーバ認証を行う際のシーケンスとして
1.Helloメッセージの送受信
2.Server Certificateメッセージの受信
3.Server Hello Done の受信
4.Client Key Exchange の送信
5.Finished の送信
(参考:http://www.atmarkit.co.jp/fnetwork/rensai/pki03/pki01.html

という手順になるかと思います。

ここで通常、クラアントは2.のサーバから送られてくるServer Certificate
つまりサーバ証明書を受信した際に、そのサーバ証明書が信頼された証明機関から
発行されたものであるかどうか・有効期限内であるかどうかをクライアント自身が
保持しているルート証明書と突合せを行い、その結果がOKであれば次のシーケンスに
進むと思うのですが、Javaで作成したクライアントAPではその「ルート証明書との突合せ」が
行われていないように思われます。
と言うのも、JDKが保持しているはずのキーストアファイルcacertを削除して実行しても
エラーとならずにSSL通信を行うことができてしまうからです。

Javaで作成されたクライアントAPでSSL通信を行う場合、自分自身のキーストアファイル内に
あるルート証明書との突合せを行わないのであれば、クライアントとしては今回の問題による
影響は考えなくてもよいものではないかと考えております。

クライアントとしてSSLを通信を行う際のJDKの動作について有識者の方が
いらっしゃいましたらご教授いただけると幸いです。

尚、こちらのクライアントAPの実行環境はJDK1.3.1_02、
ソース内にSSL通信を行うために以下の2行を記述

Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.getProperties().put("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");

また、HTTPの通信処理は HttpURLConnection を使用しております。

(サーバから発行された証明書とクライアントが保持しているルート証明書との突合せを
行うにはロジックを組む必要があるのでしょうか。。。?)

以上

[ メッセージ編集済み 編集者: debora 編集日時 2004-01-06 19:16 ]

[ メッセージ編集済み 編集者: debora 編集日時 2004-01-06 19:17 ]
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2004-01-06 19:35
引用:

また、HTTPの通信処理は HttpURLConnection を使用しております。


HttpsURLConnectionでは無いのですか?
ただのHttpURLConnectionならSSL通信(またはTLS)は行われていないのでは無いでしょうか?
debora
会議室デビュー日: 2003/03/20
投稿数: 7
投稿日時: 2004-01-06 20:07
引用:

HttpsURLConnectionでは無いのですか?
ただのHttpURLConnectionならSSL通信(またはTLS)は行われていないのでは無いでしょうか?



HttpsURLConnection はJDK1.4から実装されているようです。
JDK1.3.Xの環境では
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.getProperties().put("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
を記述すればHttpURLConnection でSSL通信が可能になるようです。
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2004-01-06 20:19
引用:

deboraさんの書き込み (2004-01-06 20:07) より:
HttpsURLConnection はJDK1.4から実装されているようです。
JDK1.3.Xの環境では
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.getProperties().put("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
を記述すればHttpURLConnection でSSL通信が可能になるようです。


なるほど、そういう事ですか。
jsse.jarなしでSSL通信ができるとは知りませんでした。

スキルアップ/キャリアアップ(JOB@IT)