[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00145] Re: Windows2000+Tomcat4.1.18 の環境下での SSL



鹿島の伊藤です。

ちょと、前の話題になりますが。。。
現在IISに関してベリサインの証明書の取得中ですが、自社のサーバーにてテストIDを使って
SSLの環境を作りました。
テストで作った素のJSPやサーブレットはきちんと表示できたのですが
Strutsの<bean:include>タグを用いている部分で例外が発生しました。
そこでこの部分を<jsp:include>タグに置き換えたところエラーは発生することなく表示ができました。
具体的には
変更前
<bean:include id="header" page="/form/common/header.jsp/>
<bean:write name="header" filter="false"/>
変更後
<jso:include page="../common/header.jsp">

これは、SSLの環境が擬似的なせいなのか?
それともStrutsの<bean:include>タグはSSLでは使ってはいけないのか?
もしくは、使えるけれども何か特別な記述が必要なのか?
Googleなどでいろいろと調べてはいるのですが同様の事例を探すことはできませんでした。

------------------------------発生した例外--------------------------------
org.apache.jasper.JasperException: Exception opening resource https://myhost/app/form/common/include.jsp: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Could not find trusted certificate
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:248)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:432)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)
	at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1033)
	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:436)
	at org.apache.struts.action.RequestProcessor.processActionForward(RequestProcessor.java:401)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1422)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:505)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:170)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:261)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:360)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:632)
	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:590)
	at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:707)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
	at java.lang.Thread.run(Thread.java:536)



                ┃  ╋━╋━━┻━━━╋━━━…‥・
  ・‥…━╋━━┻━╋  ┃  ■鹿島  ITソリューション部
          ┃    ・…╋━╋━■情報エンジニアリングGr
          ┃    ・…╋━╋━■伊藤一宏
          ・            ┃  ■Phone#:03-3746-7394 (Ex. 23317)
                        :  ■ mailto:kazuhiro-i@xxxxxxxxxx


-----Original Message-----
From: yasuyuki@xxxxxxxxxxxx [mailto:yasuyuki@xxxxxxxxxxxx] 
Sent: Tuesday, May 06, 2003 11:09 AM
To: jfriends@xxxxxxxxxxxx
Subject: [jfriends:00142] Re: Windows2000+Tomcat4.1.18 の環境下での SSL


えんどうです。

# 知ったようなことを書いていますが大嘘をついている可能性があるので、
# 実環境で地道に検証されるのが良いと思います。

> Windows2000ServerにSSLの環境を入れようとしています。
> Tomcatはjakartaのコネクターを使ってWindows2000ServerのIISにアドオンしていますが、
> この場合、Tomcat側に何か特別な設定をする必要はあるのでしょうか?


http://www.jajakarta.org/tomcat/tomcat3.2-4.0/tomcat-4.0/webapps/tomcat-docs-ja/ssl-howto.html

Tomcat SSL Howto を読むと、主にTomcat単体で使う場合のSSL設定方法が書いてあり、
ApacheやIISといったHTTPサーバー側でSSLが使える場合は、

|> 他のApacheやマイクロソフトIISのようなWebサーバの背後に
|> Servlet/JSPコンテナとしてTomcatをプライマリに稼動させ
|> ているとき、プライマリのWebサーバーがユーザーからのSSL
|> 接続をするように設定することが重要です。

|> 一般に、このサーバーはすべてのSSL関連の機能の交渉をさ
|> せて、そして、それらのリクエストを非暗号化する後にだけ
|> Tomcatコンテナに向けられたどのような要求でも通過します。

|> 同様に、Tomcatはcleartext反応を返しますが、それはユーザー
|> のブラウザに返される前に暗号化されます。 この環境では、
|> Tomcatは、安全な接続(アプリケーションが、これについて
|> 尋ねることができる必要があることによる)の上で主要な
|> ウェブサーバーとクライアントの間の通信が起こっている
|> と知っているけれども、それは暗号化または暗号解読自身
|> には関与しません。

などと書いてあるので、
そのWebサーバーの ajp13 ポートが
外部から"盗聴"できないことが保証されるなら、
Tomcat側には特別な設定は必要ないのかも知れません。

> ちなみに、Windows2000Server+JRUNのシステムが社内にありまして
> この場合はSSLの設定に関しましてJRUN側には何もしなかったと聞いております。

おそらく IIS <-> JRun 間の通信が外部から"盗聴"できないことを保証する
設定(または環境)を前提にしているのだと思います。

であれば IIS <-> Tomcat も同様だと推測できます。

-- 
ENDO Yasuyuki <yasuyuki@xxxxxxxxxxxx> http://www.javaopen.org/~yasuyuki/ (Personal/Japanese Only) http://www.javaopen.org/jfriends/ (Japanese Only)