【Tomcat】Tomcat で SSL通信 ~簡易版~

初めに

 * とりあえず、WinOS + TomcatSSL通信を行いたい場合の手順を記す
   (もう少しちゃんとした方法は、下記の【関連記事】を参照のこと)
 * Tomcat8.5については、以下の関連記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/36513426.html

予備知識

 * 以下の関連記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/33100623.html

手順

大きく分けて、最低でも以下を行う必要がある

 [1] キーストア(keystore)の作成
 [2] TomcatSSLコネクタを有効にする

設定環境

 * 以下の環境で設定した(設定成功している)
  + WinXp / Tomcat6
  + Win7 / Tomcat6.0.35
  + Win7 / Tomcat7.0.42

 * Tomcat8.5については、以下の関連記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/36513426.html

前提条件

 * 以下が、インストールされていること
  + Tomcat
 + JDK

[1] キーストアの作成

手順

 [1-1] コマンドプロンプトを立ち上げる
      => OSが、Vista以上の場合は、「管理者として実行」でコマンドプロンプトを実行すること
    (詳細は、下記のトラブルシューティングを参照のこと)

 [1-2] JDK に付属している keytool があるパスまで、移動する
  →例「cd C:\Program Files\Java\jdk1.7.0_25\bin」

 [1-3] keytoolツールで、キーストアを作成する
 ~~~
  keytool -genkey -alias [証明書の名称] -keyalg RSA -keystore [ファイル名]
  or
  keytool -genkey -alias [証明書の名称] -keyalg RSA -keystore [ファイル名] -validity [有効日数]
 ~~~
  →例「keytool -genkey -alias tomcat -keyalg RSA -keystore demo.keystore」

 ※デフォルトの鍵とキーストアのパスワードは「changeit」
 ※-keystoreを指定しなかった場合、
  WinXPでは「C:\Documents and Settings\【ユーザ名】」の下に自己証明書「.keystore」が作成されるので
  任意の場所に移動する
   →例「C:\pg\apache-tomcat-7.0.41\conf\StoreKey\.keystore」
 ※いきなり、"%JAVA_HOME%\bin\keytool"だと楽
   →例「"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA -keystore demo.keystore -validity 3650」
http://sehermitage.web.fc2.com/program/java_keytool.html

参考資料

https://jp.globalsign.com/support/csr/05.html
http://elfhbt.blog33.fc2.com/blog-entry-28.html
http://apis.jpn.ph/fswiki/wiki.cgi?page=Java%2Fkeytool
http://siisise.net/java/tomcat/ssl.html

[2] TomcatSSLコネクタを有効にする

手順

 [2-1] 「【Tomcatがある環境】\apache-tomcat-X.X.XX\conf\server.xml」をエディタで開く
   → 例「C:\pg\apache-tomcat-7.0.41\conf\server.xml」をメモ帳で開く
 [2-2] 以下を追加(「port="8443"」などで検索すればヒットすると思うので、その付近に追加)

    ■構文
    <Connector port="8443"
               protocol="org.apache.coyote.http11.Http11Protocol"
               SSLEnabled="true"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" debug="0" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="[キーストアファイルの位置]"
               keystorePass="[キーストアファイルのパスワード]"
               keyAlias="[キーストア内での証明書の名称]" />

    ■例
    <Connector port="8443"
               protocol="org.apache.coyote.http11.Http11Protocol"
               SSLEnabled="true"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" debug="0" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="C:\pg\apache-tomcat-7.0.41\demo.keystore"
               keystorePass="changeit"
               keyAlias="tomcat" />

参考資料

http://www.itmedia.co.jp/enterprise/articles/0407/01/news018.html
http://d.hatena.ne.jp/tanakakns/20120614/1339670358
http://elfhbt.blog33.fc2.com/blog-entry-28.html
http://d.hatena.ne.jp/solitary_shell/20090227/1235708539
http://buzzmemo.blogspot.jp/2010/03/tomcatssl.html
http://siisise.net/java/tomcat/ssl.html
http://www.digicert.ne.jp/howto/install/install_tmcat.html
http://chakotay.jugem.jp/?eid=629


関連記事

Tomcat

設定ファイル server.xml ~ Connector / Special Features 編~
 * server.xmlの属性については以下の関連記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/35255676.html
TomcatSSL通信 ~簡易版~
http://blogs.yahoo.co.jp/dk521123/31967584.html
Tomcat 8.5 で SSL通信 ~簡易版~
http://blogs.yahoo.co.jp/dk521123/36513426.html
TomcatSSL通信 ~TomcatCSR作成と証明書を組み込む~
http://blogs.yahoo.co.jp/dk521123/32060070.html

Java

Java で、SSL通信を行うには
 * 今回の証明書などを使って、JavaによるSSL通信。
http://blogs.yahoo.co.jp/dk521123/33122920.html

Openssl / keytool

Opensslの設定と自己証明書作成
http://blogs.yahoo.co.jp/dk521123/32723492.html
Openssl に関するトラブルシューティング
http://blogs.yahoo.co.jp/dk521123/33100502.html
Keytool と Openssl を使った証明書作成
http://blogs.yahoo.co.jp/dk521123/33788938.html
keytoolエラーに関するトラブルシューティング
http://blogs.yahoo.co.jp/dk521123/32297632.html

その他

SSL通信について
 * 用語をまとめている。
http://blogs.yahoo.co.jp/dk521123/33100623.html