- PR -

TomcatとSSL通信

1
投稿者投稿内容
たかし
常連さん
会議室デビュー日: 2004/10/15
投稿数: 27
投稿日時: 2004-10-15 00:58
はじめまして。Sampleといいます。

TomcatでSSL通信を行うサーブレットアプリを開発しようとしています。

開発環境は以下のとおりです。
・WindowsXP Professional
・jakarta-tomcat-4.1.30/jakarta-tomcat-5.0.19
 ※4.1と5.0の両方で試しました。
・JavaVM j2sdk1.4.2_03
・Eclipse Platform Version: 2.1.2

Apache Jakarta Project(http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/ssl-howto.html)を参考に証明書のキーストアを作成して、Tomcatの設定ファイルを編集し、https://localhost:8443にアクセスするのですが、Tomcat起動時に例外が発生し、起動しません。
例外内容は以下のとおりです。
--------------------------------------------
java.lang.ClassNotFoundException: Can't find any SSL implementation
at org.apache.tomcat.util.net.SSLImplementation.getInstance(SSLImplementation.java:100)
at org.apache.tomcat.util.net.SSLImplementation.getInstance(SSLImplementation.java:106)
at org.apache.coyote.http11.Http11Protocol.checkSocketFactory(Http11Protocol.java:797)
at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:166)
at org.apache.coyote.tomcat5.CoyoteConnector.initialize(CoyoteConnector.java:1445)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:648)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:2416)
at org.apache.catalina.startup.Catalina.load(Catalina.java:545)
at org.apache.catalina.startup.Catalina.load(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:260)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:397)
--------------------------------------------
上の例外を解決する情報を見つけることができず、対処に行き詰まっています。
解決する方法や参考サイトなどありましたら、お手数をお掛けしますが、よろしくお願いいたします。
たかし
常連さん
会議室デビュー日: 2004/10/15
投稿数: 27
投稿日時: 2004-10-17 23:32
Sampleです。

CATALINA_HOMEに4.1のパスが通っており、
Tomcat5.0でstartupしても、動作しなかったことが原因のひとつ。
また、CATALINA_HOMEに5.0のパスを通して、eclispでtomcatを起動し、
SSL認証するとエラーが発生する。
CATALINA_HOME\bin\startup.batよりtomcat起動すると、
SSL認証ためのポップアップが表示され、証明書の確認が表示される。

4.1は原因不明。

server.xmlでSSL認証の環境を整えても、eclipsから起動できないのでしょうか??

現状、5.0のstart.batより起動し、動作を確認しています。

[ メッセージ編集済み 編集者: Sample 編集日時 2004-10-17 23:35 ]
tada
会議室デビュー日: 2003/05/08
投稿数: 12
投稿日時: 2005-05-16 16:34
tadaです。

Tomcat単体でSSLの設定を行おうとしているのですが、tomcatが起動しません。
下記手順により、SSL設定を行いました

1.%CATALINA_HOME%conf/server.xmlの
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 443 -->
<!--
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="443" minProcessors="5" maxProcessors="75"
enableLookups="true"
acceptCount="100" debug="0" scheme="https" secure="true"
useURIValidationHack="false" disableUploadTimeout="true">
<Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
keystoreFile=".keystore" keystorePass="tomcat"
clientAuth="false" protocol="TLS" />
</Connector>
-->
のポート番号を443に変更し、コメントアウトをはずす

2.コマンドプロンプトにより証明書を作成
keytool -genkey -alias tomcat -keyalg RSA ....

3.tomcatを再起動する

3.でeclipseから再起動しようとすると
------------------------------------------------------------------------------
Catalina.start: LifecycleException: Protocol handler initialization failed: java.lang.ClassNotFoundException: Can't find any SSL implementation
LifecycleException: Protocol handler initialization failed: java.lang.ClassNotFoundException: Can't find any SSL implementation
at org.apache.coyote.tomcat4.CoyoteConnector.initialize(CoyoteConnector.java:1034)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:579)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:2245)
at org.apache.catalina.startup.Catalina.start(Catalina.java:511)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
Catalina.stop: LifecycleException: このサーバは、まだ起動されていません
LifecycleException: このサーバは、まだ起動されていません
at org.apache.catalina.core.StandardServer.stop(StandardServer.java:2212)
at org.apache.catalina.startup.Catalina.start(Catalina.java:543)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
-------------------------------------------------------------------------------
というエラーメッセージが出力されます。
tomcatのjarファイルが壊れているのかと思い、再度jarファイルを置きなおしましたが
やはり同様のエラーが出ました。

Tomcat4.1系ではTomcat単体のSSLは設定できないのでしょうか?
eclipseでの再起動が原因かと思い、コマンドプロンプトからstartupコマンドで
起動しようとしても、コンソールが立ち上がらず再起動できません。

環境は
・Windows2000 5.00.2195 Service Pack 4
・Tomcat 4.1.18
・J2SE 1.4.1_01
・eclipse 2.1.0
です。
解決方法や、参考ページ等ご教授頂けますでしょうか?
宜しくお願い致します。
tada
会議室デビュー日: 2003/05/08
投稿数: 12
投稿日時: 2005-05-16 18:59
tadaです。
自己レスです。

1.%CATALINA_HOME%conf/server.xmlの
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 443 -->
<!--
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="443" minProcessors="5" maxProcessors="75"
enableLookups="true"
acceptCount="100" debug="0" scheme="https" secure="true"
useURIValidationHack="false" disableUploadTimeout="true">
<Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
keystoreFile=".keystore" keystorePass="tomcat"
clientAuth="false" protocol="TLS" />
</Connector>
-->

上記の設定で、作成したKeystoreファイルの置き場所を%CATALINA_HOME%
に設定したのに、違う場所にKeystoreファイルを置いたのが原因でした。
正確な場所に置きなおした後、コマンドプロンプトからstartupコマンドで
Tomcatを起動したところ、無事起動できました。
サービスからの起動にも成功しましたが、やはりeclipseからの起動は
出来ませんでした。

お騒がせ致しました。
1

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