Java Tips:TomcatでSSLを使うには?JAVA Developer

Webの通信経路を暗号化するときにはSSLを使いますが,TomcatでSSLを使うときの鍵の作り方と設定をまとめます。

» 2004年07月01日 06時22分 公開
[JAVA Developer]

TomcatでSSLを使うときの鍵生成

 利用しているJ2SEやTomcatのバージョンによって準備が異なります。

 J2SEについては,バージョン1.4以降ならJSSEが含まれていますので特段の準備はいりませんが,それ以前なら別途JSSEが必要です。個別にダウンロードする際は次のURLから入手できます。

JSSEダウンロード

 Tomcatはバージョン5系列の例で紹介しますが,4.1や4.0でもほぼ同じです。

ステップ(1)

 TomcatのSSLコネクタを有効にする必要があります。

 TomcatのインストールディレクトリをCATALINA_HOMEとすると,CATALINA_HOME/conf/server.xmlに設定します。このXMLファイルを開いてポート番号として8443が指定されたConnector要素を探します。デフォルトではコメントになっています。

 <!--
    <Connector port="8443" 
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" debug="0" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
 -->

 Connector要素の前後にあるコメント記号を削除して,コネクタを有効にします。次に,8443になっているポート番号も,SSLで一般的な443にしておきましょう。参考まで,Tomcat 4.1系列の場合は次のようになっていると思います。

 <!--
    <Connector className="org.apache.catalina.connector.http.HttpConnector"
               port="8443" minProcessors="5" maxProcessors="75"
 -->

 この場合も,コメント記号を削除してポート番号を443にします。

 同じ設定ファイル中に,redirectPort属性としていくつか8443を設定している箇所があります。これもすべて443に変更します。

ステップ(2)

 鍵を作ります。これにはJ2SEに含まれているkeytoolツールを使います。次のように入力して起動します。

> keytool -genkey -alias tomcat -keyalg RSA

 起動したらコマンドラインで対話形式になっていますので,質問に1つずつ答えていきます。鍵の発行者に関する情報を入力していきます。次の例では太字の部分が入力箇所です。

キーストアのパスワードを入力してください:  changeit
姓名を入力してください。
  [Unknown]:  yamada
組織単位名を入力してください。
  [Unknown]:  JAVA Developer
組織名を入力してください。
  [Unknown]:  Sbp
都市名または地域名を入力してください。
  [Unknown]:  Akasaka
州名または地方名を入力してください。
  [Unknown]:  Tokyo
この単位に該当する 2 文字の国番号を入力してください。
  [Unknown]:  JP
CN=yamada, OU=JAVA Developer, O=Sbp, L=Akasaka, ST=Tokyo, C=JP でよろしいですか?
  [no]:  yes
<tomcat> の鍵パスワードを入力してください。
        (キーストアのパスワードと同じ場合は RETURN を押してください):  changeit

 この中で,「changeit」というのはデフォルトの鍵とキーストアのパスワードです。デフォルトで「changeit」になっています。パスワードを変えた場合は,先ほどの設定ファイルのConnector要素の子要素(Factory)を追加してパスワードを指定しなければなりません。

 パスワード以外の入力は,あまり神経質にならなくてもかまいません。

 これでユーザーのディレクトリにキーができています。キーストアのデフォルトは,Windowsなら"%USERPROFILE%"\.keystoreです。UNIXなら~/.keystoreとなります。この中に鍵が追加されているはずです。あとは,Tomcatを起動したら大丈夫でしょう。

 なお,キーストアを保存したディレクトリを移動したい場合なども設定を変える必要があります。次のサンプルは,キーストアのパスワードとディレクトリを指定した例で、Connector要素の子としてFactory要素を記述します。

<Factory className="org.apache.catalina.net.SSLServerSocketFactory"
         keystorePass="myPass"
         keystoreFile="c:/usr/src/java/servlet/.keystore"

 JAVA Developerより毎週Java Tipsをお届けしましょう。バックナンバーもよろしく。

Copyright(C) 2010 SOFTBANK Creative Inc. All Right Reserved.