- PR -

SSLでのFileUploadに失敗する

投稿者投稿内容
kawa
常連さん
会議室デビュー日: 2003/03/25
投稿数: 27
お住まい・勤務地: 東京都
投稿日時: 2004-08-19 10:52
現在Struts(Commons-upload)でFileUploadを実装中です。
非SSL環境ではうまくいくのですが、SSLにしたとたんに
IEから「サーバーが見つかりません」というエラーが表示されます。

これはMicrosoftのサポート技術情報によると
「This problem occurs because Urlmon.dll does not retry writing the content of the file to upload after the SSL client authentication has occurred.
この問題はUrlmon.dllがSSLのクライアント認証が発生した後でアップロードするファイルコンテンツを再書き込みしないことによる」とあります。
http://support.microsoft.com/default.aspx?scid=kb;en-us;815764

この問題を解決するためには
「Configure SSL client authentication on the form-based file upload page.(フォームペースのファイルアップロードを行うページ上でSSLのクライアント認証をいじれ)」と
「In the form-based file upload page, insert a hidden element (such as an image) that references an URL that requires SSL client authentication.
(フォームペースのファイルアップロードページにおいて、SSLのクライアント認証を要求するようなURLを参照する[イメージのような]隠し項目を挿入せよ)」
とあります。

具体的にこの二つはどのように実装すればよいのでしょうか?
aa
ぬし
会議室デビュー日: 2004/01/08
投稿数: 299
投稿日時: 2004-08-19 20:29
SSLは分かりませんけど、<form>を書いているhtml(jsp)ファイルの中で
<img src="http://SSLのクライアント認証を要求するようなURL/xxxx.jpg" />
とか入れておけという意味じゃないんですか?

で、ここで参照されるjpegファイルが真っ白な10x10ポイント程度の画像のような
まったく意味をなさない表示されても気づかない程度のダミー(hidden)でいい
わけです。目的は、再度SSLのクライアント認証が実行される事ですから。
masaka
常連さん
会議室デビュー日: 2003/08/04
投稿数: 27
お住まい・勤務地: 東京
投稿日時: 2004-08-19 21:34
わたしは何度もSSL+Strutsでファイルアップロードをしていますが、うまくいっていますよ。
そもそも、このMicrosoftのサポート技術情報ではSSLでクライアント認証を行うときのことをいっているのだと思いますが、SSLでクライアント認証をしないときにはうまくいくのですか?

その他、IEのバージョン,OS,サーブレットコンテナ、などなど、もう少し情報を載せた方がいっぱい返答が返ってきますよ。
kawa
常連さん
会議室デビュー日: 2003/03/25
投稿数: 27
お住まい・勤務地: 東京都
投稿日時: 2004-08-20 10:51
aa様 お返事ありがとうございます。

なるほどダミーのファイルへの参照を組み込んでおくわけですね。
ちなみにSSLなので

<img src="http://〜"



<img src="https://〜"

ですよね?
kawa
常連さん
会議室デビュー日: 2003/03/25
投稿数: 27
お住まい・勤務地: 東京都
投稿日時: 2004-08-20 11:09
masaka様 お返事ありがとうございます。

わたし、とんでもなく勘違いしいるかもしれません。
クライアント認証なんて使っていないかもしれません。

■開発環境
WindowsXP Professional
IE6 SP1
WebSphere Studio Site Developer 5.1.0(組み込まれているWASで動作させている)
IEやWASに証明書を組み込んだりはしていません。
Struts1.1

■現象
ファイルアップロードを行うアプリを作成して以下のURLでアクセス
(非SSL)http://localhost:9080/***/
( SSL)https://localhost:9443/***/

非SSLでは正常に動作する
SSLでは「サーバーが見つかりません」

■その他
Struts1.1のサンプルとして提供されているstruts-upload.warを同じ環境に組み込んで実行してみたところ
https:localhost:9443/upload/
で正常に動作しているように見えます。

これはコーディングの問題か??
masaka
常連さん
会議室デビュー日: 2003/08/04
投稿数: 27
お住まい・勤務地: 東京
投稿日時: 2004-08-22 00:10
なるほど。
ところで、SSLのときにはファイルアップロードをしない通常のページ(HTML,JSPなど)は表示できるのでしょうか?
また、ページが見つからないときには具体的にどのような表示がされるのでしょう?
kawa
常連さん
会議室デビュー日: 2003/03/25
投稿数: 27
お住まい・勤務地: 東京都
投稿日時: 2004-08-22 18:21
masaka様 お返事助かります。

>SSLのときにはファイルアップロードをしない通常のページ(HTML,JSPなど)は
>表示できるのでしょうか?

はい、他のページはまったく問題なく表示されます。
アップロードのページでサブミットボタンを押した瞬間に以下の画面が表示されます。

<タイトル>
サーバーが見つかりません。

<本文>
ページを表示できません
検索中のページは現在、利用できません。Web サイトに技術的な問題が発生しているか、ブラウザの設定を調整する必要があります。

〜〜中略〜〜

サーバーが見つからないか、DNS エラーです。
Internet Explorer

よくみるIEのエラー画面ですね。

明日会社行ったら同じコードをTomcat上で動かしてみようと思います。

unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-08-22 19:11
unibon です。こんにちわ。

GET は大丈夫なんでしょうか?また、ファイルアップロードではない普通の POST は大丈夫なのでしょうか?
さらに、ファイルアップロード用のページに対して、普通の POST をしたり、その逆に、普通の POST を受けるページに対して、ファイルアップロードの POST をしてみたらどうなるでしょうか?なにか手がかりがつかめるかもしれません。

また、あまり関係ないかもしれませんが、localhost を使っているのでプロキシーは使っていないようですが、プロキシーは本当に使わない設定になっているでしょうか?

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