• ベストアンサー

JSSEを使用したProxy経由のHTTPS通信について

いつもお世話になっております。 タイトルの件で質問させてください。 現在JSSEを使用しProxy経由のHTTPS通信するJavaアプリケーションを作成しています。 具体的な動作としては指定のURLのソースをテキストエリアに表示させるだけ なのですが、手こずっています。 インターネット上においてHTTP通信は成功するのですが、HTTPSの場合エラー が発生します。 →ERROR: The requested URL could not be retrieved (上記はエラーの一部です。これはHTML形式でかえってきます。) 試しにイントラネット上にてHTTPS通信をしてみました。 (もちろんProxyは経由しません。) サーバはWeblogicServer6.1Jを使用し、HTTPS通信を試みたのですが下記の ようなExxeptionが発生します。 ちなみにWeblogicは普通にインストールして起動しただけで、特に何もしていません。 javax.net.ssl.SSLException: untrusted server cert chain at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a([DashoPro-V1.2-120198]) (以下略) Weblogicに最初からくっついてくる認証ファイル(?)をどこかに置くとかそういう ことで解決できるのでしょうか? 解決方法をご存じの方はご教授下さい。 --開発環境-- OS:Win2k sp2 IDE:JBuilder5 Personal(JDK1.3.0_2)   Sun JSSE1.0.2を使用 --WeblogicServer-- OS:Win2k sp2 webserver:WeblogicServer6.1J

  • ct27
  • お礼率80% (40/50)
  • Java
  • 回答数3
  • ありがとう数7

質問者が選んだベストアンサー

  • ベストアンサー
  • mkim
  • ベストアンサー率67% (25/37)
回答No.1

私もやったことないので、少しでも手助けになればと思い、書かせていただきます^^; まず、「The requested URL could not be retrieved」についてですが、 わかりません。プロキシではじかれてるだけかなと思いつつも、その辺は、 ct27さんの方が詳しそうとみまして。 イントラネットで、まず成功を考え、ちょっと調べてみましたら、少し興味深い 事が載っているサイトを見つけましたので、お知らせしておきます。 http://httpunit.sourceforge.net/doc/sslfaq.html 上記アドレスに 「Weblogicについては、configファイルでweblogic.security.ssl.enable=true をセットして、[https://myhost]のようなURLを使用してください。」 とあります。訳が間違ってたら、すいません^^; あとは、上記サイトの 「How can I import my existing certificate into the "trust file" for a JVM?」 の部分を確認され、手順通りに作業されると、「untrusted」な状態が回避できるかもしれません。 また、このサイトの内容が信用できるものかどうかわかりませんが、 参考になれば幸いです。 まったく、自信ないですので、あくまで参考までにと言う事で。 がんばってください^^

ct27
質問者

補足

アドバイスありがとうございます。 URL参照させていただきました。weblogic.security.ssl.enable=trueの部分なの ですが、書き方からしておそらく以前のバージョンの設定ファイルの書き方の ように思います。(weblogicは詳しくないのですが・・・(^^;) mkimさんがポイントとしてあげてくださった部分を参考にいろいろとやってみま したが、まだ試していませんがおそらくイントラネット上ではうまくいきそうに 思います。ただインターネット上でできないと意味がないのでなんとかPorxy経由 のHTTPSを実現させたいです。 とりあえずProxyを通さずにHTTPS通信できるかというのはまだやっていないので ちょっと試していきたいと思います。 なにかお気づきの点がありましたらまたアドバイスをお願いいたします。

その他の回答 (2)

  • yuji
  • ベストアンサー率37% (64/169)
回答No.3

すみません。 ANo.#2の回答をした者ですが、 Proxy経由で行っていたのは HTTP でした。 HTTPSの場合は Proxy 経由では試していません。

ct27
質問者

お礼

SUNのUSを調べたところ、どうやらJSSE1.0.2ではProxy認証+HTTPSはバグがあって 動かないようです。(^^;; J2SEv1.4からJSSEが付属してくるので、試しにJSSEv1.4で動作を確認してみた ところ、なんとProxy認証+HTTPSで通信ができました!! しかしv1.4は出たばかりなので導入するかどうかはわかりませんが、とりあえず わかって良かったです。みなさんありがとうございました。 とりあえずポイントは書き込みをいただいた順番に差し上げたいと思います。

ct27
質問者

補足

アドバイスありがとうございました。 JavaWorld2000年4月号に記載があるという話は知っていたのですが、残念ながら 手元にありません。(^^; とりあえず現状はProxyを経由しなければHTTPS通信はできますが、プロキシ経由 のHTTPS通信はできません。SUNのUSサイトを探索して似たようなものを探して いるのですが、ソケットを使用したものが大半な上、英語なので非常につらいですね。 ちなみにこんな例外が発生しています。 javax.net.ssl.SSLException: Unrecognized SSL handshake. (以下略)

  • yuji
  • ベストアンサー率37% (64/169)
回答No.2

私は「Java World 2000/4月号」を見て HTTPSを使った通信のクライアントを作成しました。 Proxyを通すことも可能です。 仕事で作ったので、ソースを公開することはできませんが バックナンバーが手に入るなら、 「Java World 2000/4月号」を入手してみてください。

関連するQ&A

  • HTTPS(SSL)通信とサーブレットについて

    ショッピングサイトなどで、買い物カゴに入れたあと、支払いするときにHTTPS(SSL)通信になりますが、この場合の仕組みがよくわかりません。 (1)これは、WebサーバをHTTP用とHTTPS(SSL)用の2台構成として、買い物カゴにいれるまでは、HTTP用のWebサーバでアクセスしておいて、支払いするときにHTTPS(SSL)用のWebサーバにアクセスさせることで実現してるのでしょうか? (2)ショッピングサイトを見ると、URLはHTTP://がHTTPS://に変わるだけで、サーバが変わっているようには見えませんが、これは、apacheなどのWebサーバが持つバーチャルホスト機能で実現してるのでしょうか? (3)アプリケーションを開発する側としては、HTTP通信を行うサーブレットはHTTP用のサーバに配置して、HTTPS(SSL)通信を行うサーブレットはHTTPS(SSL)用のサーバに配置しておいて、HTTPS(SSL)通信をしたいときは、HTTP用のサーバに配置したサーブレットから、HTTPS(SSL)用のサーバに配置したサーブレットを呼びだすだけでOKでしょうか? (4)また、(3)が正しい場合、サーブレットの配置さえ気にしていれば、特にHTTPS(SSL)用のプログラムを組む必要はないでしょうか? 調べたのですが、最初からHTTP(SSL)通信する場合の方法しか記載がなくて困っています。

  • proxy経由とは?

    「http://www.kent-web.com/bbs/wforum/wforum.cgi」にあるようなフォーラムタイプの掲示板に書き込みしようとしたら「proxy経由での投稿はご遠慮下さい」とエラーになりました。 その掲示板には3ヶ月ほど前に1度だけ書き込みしたことがありますが、その時は何も問題なかったのに、なぜこのようなエラーが出てしまったのでしょう? パソコンで何か設定を変えた覚えはありません・・・と言うか初心者なのでproxy経由の意味が全くわかりませんから変えようがないのです。 どこが、どうなってしまったのでしょうか。 ご指導頂けたら助かります。 パソコン:DELL製、OS:XP Home Edition SP2、接続:ADSL です。よろしくお願い致します。

  • 透過型プロキシのHTTPS通信

    現在,自作の透過型HTTP/HTTPSプロキシを開発中です. プロキシとしての動作は単にクライアント・サーバ間のデータ受け渡しを行うだけなのですが,現在,透過型の実現で困っております. 透過型の実現には,iptablesを利用し,宛先ポート80番のデータの宛先ポート番号を3128番(本プロキシ)に変換し,本システムにデータを送信しています.HTTPの場合はこれで問題ないのですが,HTTPSの場合が問題です. HTTPSの場合はSSLハンドシェイク等,通常のHTTPとは違う手順を行わなければならないので,HTTP,HTTPSどちらで通信するのかをあらかじめ知る必要があります. クライアントのWebブラウザでプロキシの指定を行う場合(透過型ではない)のHTTPS通信は,クライアントからCONNECTリクエストが実行された場合のみ,HTTPS通信処理へ分岐させればいいのですが,透過型の場合は,クライアントからそのメソッドが実行されず,さらにiptablesによって宛先ポート番号も3128番に書き換えられているため,HTTP通信なのかHTTPS通信なのかを判別することができません. これを実現するためには,どのような方法があるのでしょうか? 透過型プロキシでHTTPS通信をサポートする製品(Webフィルタリングソフト等)はたくさん存在しているため,実現は可能だと考えられるのですが,どのように実現されているのでしょうか? 考えられるひとつの方法としては,HTTP用を3128番,HTTPS用を3129番ポートで実行しておいて,iptablesで80ならば3128,430ならば3129等と振り分ける方法が挙げられますが,どうでしょうか. よろしくお願いいたします.

  • Proxy経由でサイトにアクセスする方法を教えてください

    サイバーシンドロームなどで取得したproxyとポート番号を用いて、サイトにアクセスする方法(もちろんPHPのプログラム上で)を教えてください。 具体的には、linkでプロキシ経由のURLを指定したいです。 例えば、以下のリンクを叩くと、proxy経由でリンクされたことにしたいです。 <a href="http://www.yahoo.co.jp">ヤフー</a>  hrefの指定の方法にoptionを指定するだけなのか、それとも通信関連の関数を使用しなければいけないのか、実装方法も分からない状態で苦戦しております。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • PROXY経由で特定のWebページにアクセスできない

    2台のPROXYを利用しています。PROXY1とPROXY2とします。PROXY1から特定のWebページにアクセスできないのですが、PROXY2からはアクセス可能です。 また、PROXY1は特定のWebページ以外はアクセス可能です。 アクセスできないときのブラウザの表示は以下の通りです。 ERROR The requested URL could not be retrieved While trying to retrieve the URL: http://www.~ The following error was encountered: Connection Failed The system returned: (10060) WSAETIMEDOUT, Connection timed out. The remote host or network may be down. Please try the request again. Your cache administrator is webmaster. 何が原因なのでしょう?

  • URLConnectionを用いたHTTPS通信時のタイムアウト設定

    現在java1.4.2.10を用いて、 指定のIDに紐づいたURLをDBから取得し、URLConnectionを用いて、取得したURL接続するといったプログラムを作成しております。 今回困っておりますのが、取得したURLがHTTPS通信だった場合のタイムアウト設定方法となります。 HTTPの場合は、下記のサイト http://www.slayers.nu/~kumasaka/Gyoumu/timeout.html を参考にさせていただき、なんとかなりましたが、HTTPSの場合には対応しておらず、困っております。 java1.5にはタイムアウト設定があるのですが、都合上1.5にはできず、 1.4.2で対応したく考えております。 System.setProperty に sun.net.client.defaultReadTimeout を設定することで getInputStream から抜けるまでの時間を制御できるようなのですが、これだと、1接続ごとにタイムアウト設定できません。 socket通信も考えたのですが、socket通信を用いた場合の、HTTPS通信の仕方もわからず、どなたかご教授のほどよろしくお願いいたします。

  • ■HTTPS通信の時の証明書について。■

    <構成図> 端末PC----WAN----Server(SSL,CA,WEB) <条件> 自己認証局(CA)により、https通信を検討しています。 認証方法としては、 1.サーバ証明書を利用する(URLのSection1)方法と 2.クライアント証明書を利用する(URLのSection2)があります。 <参考URL> http://park15.wakwak.com/~unixlife/practical/openssl.html ■質問1 端末PCから、Serverに通信するとき、 1.サーバ証明書の方法ですと、端末PCにサーバ証明書を入れなくても、 警告がでるが、通信はできそうですが、 2.クライアント証明書の方法も、端末PCにクライアント証明書をいれなくても、 警告がでるが、通信はできますか? ■質問2 上記の例だと、自己認証局(CA)による<条件>ですが、 外部CA認証局を利用する場合も、 1.サーバ証明書、2.クライアント証明書の方法ともに、 警告がでるが、通信はできるのでしょうか? 宜しくお願いします。

  • PROXY環境下で自動updat を実行する

    会社でネットワークを管理している者です。 proxy サーバーを設置しており、インターネットへアクセスする場合は proxyサーバーを経由する通信のみ許可するようにfirewall で制御しています。 社内パソコンには、 adobe reader や、java がインストールしているのですが、 自動で更新確認をするアプリケーションは、proxy サーバーを経由しないため、 更新確認ができなくて困っています。 皆様は、どのような対応をされているのでしょうか。

  • SSL/TLS通信を行う上で必要なサービス

    OS:Windows Server 2008 R2 以下について、ご教示ください。 Windows Server 2008 R2おいて、他のサーバーとSSL/TLS通信を行うために必要なサービスは「WinHTTP Web Proxy Auto-Discovery Service」であっていますでしょうか。 その認識であっている場合、「WinHTTP Web Proxy Auto-Discovery Service」が起動していないとSSL/TLS通信はできないでしょうか。 某D社でSSL-VPN装置のサポートデスク業務につく際の教育でSSL-VPN装置とSSL接続する場合、「WinHTTP Web Proxy Auto-Discovery Service」の起動が必要と聞いた気がしていますが、うる覚えなところがあるため、ご教示頂きたいと考えております。

  • 古いブラウザでインターネット

    お世話になります。 完全に趣味の世界の話です。 古いブラウザでインターネットをする方法を検討しています。 古いパソコンにインストールされているブラウザ、 SSL2.0、SSL3.0、TLS1.0にしか対応していないようなブラウザだと、 昨今のhttpsのウェブサイトは表示されず、httpの非暗号サイトしかアクセスできません。 以前、squidによるリバースプロキシで、80番のHTTPサーバに対して外部からのアクセスは、https化しているように見せかける…という方法が取れるというのは知っていたのですが、 proxyなどの中継サーバーを自宅内に立ち上げて、 通常のインターネット通信は、Proxyサーバー経由、 ローカル側のブラウザ-Proxyサーバー間は、ssl2.0や、もしくはhttpsリクエストを、proxy側でhttp化してアクセス。 (ローカル端末からはhttpアクセスでproxyサーバにキャッシュされたhttps(tls1.2→ssl2.0化)のWebサイトを見る。) といった事は現実的に可能でしょうか。 よろしくお願いいたします。

専門家に質問してみよう