(1) Tomcatでhttps接続を行う方法(自己証明書を使ってSSL化する方法)
(1-1) STEP1:鍵や証明書の作成
(1-2) STEP2:証明書の配備(任意)
(1-3) STEP3:server.xmlの編集
(1-4) STEP4:ファイアウォール設定
(1-5) STEP5:疎通チェック
(1) Tomcatでhttps接続を行う方法(自己証明書を使ってSSL化する方法)
本記事ではTomcatを「https」に対応させる手順をご紹介します。大まかな流れとしては、①SSL証明書を作る⇒②Tomcatの設定ファイル「server.xml」に反映させる⇒③ファイアウォールの設定を行う⇒④疎通となります。早速、各ステップの手順を見ていきます。
(1-1) STEP1:鍵や証明書の作成
keytool -genkey -alias tomcat -keyalg RSA -keypass [パスワード] -keystore mycertificate.cer -storepass [パスワード]
このkeytoolコマンドは主に公開鍵/秘密鍵の管理や、証明書の発行などで使用します。「証明書」というのはある組織や個人によるデジタル署名で、これによりデータの完全性などを証明します。各オプションの概要は以下の表の通りです。
(表)
オプション | 説明 |
-genkey | 「キーストア」と「キーペア」(「秘密鍵」と「SSL証明書」)を生成するためのオプションです。ただし、最近では「-genkeypair」の方を利用するようです(名前は違うが同じもの)。 |
-alias | 「キーストア」の明細を参照する時に使う「別名」(alias)です。 |
-keyalg | 「キーペア」を生成する際のアルゴリズム(暗号体系)を指定します。 |
-keypass | 「キーストア」の中の「秘密鍵」のパスワードです。 |
-keystore | 「キーストア」の「ファイル名」(「ファイルパス」も任意指定可能)を指定するオプションです。パスを指定しない場合はカレントディレクトリに生成されます。 |
-storepass | 「キーストア」のパスワードです。キーストアというのは複数の鍵や証明書を含んだバイナリファイルです。 |
(図111)補足
コマンドを実行すると、証明書の作成に必要な各種情報を聞いてくるので、それぞれ入力して[Enter]を押下します。
姓名は何ですか。 [Unknown]: Rainbow Planet 組織単位名は何ですか。 [Unknown]: Rainbow Planet Inc 組織名は何ですか。 [Unknown]: Rainbow Planet Inc 都市名または地域名は何ですか。 [Unknown]: Marunouchi 都道府県名または州名は何ですか。 [Unknown]: Tokyo この単位に該当する2文字の国コードは何ですか。 [Unknown]: JP CN=Rainbow Planet, OU=Rainbow Planet Inc, O=Rainbow Planet Inc, L=Marunouchi, ST=Tokyo, C=JPでよろしいですか。 [いいえ]: y
(1-2) STEP2:証明書の配備(任意)
作成した証明書を任意のディレクトリに配備します。例ではTomcatのconfigが置いてあるディレクトリ($CATALINA_HOME/conf)に配備します。
mv ./mycertificate.cer $CATALINA_HOME/conf
この配備先のパスは後のserver.xmlの編集にて使用します。
(1-3) STEP3:server.xmlの編集
server.xmlはTomcatの中核をなす設定ファイル(xmlファイル)です。Tomcatのアーキテクチャにおける「Server」や「Service」や「Connector」の設定を司っています。ここにhttps用のConnectorを設定し、8443ポートで通信出来るようにします。
■server.xmlの格納場所
$CATALINA_HOME/conf
私の場合は具体的に次のようなパスです(Xの部分はTomcatのバージョン番号)
/usr/local/src/apache-tomcat-X.X.XX/conf
以下Serviceタグの配下に記述します。
<Service name="Catalina">
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1" keystoreFile="conf/mycertificate.cer" keystorePass="[パスワード]" />
(図132)追記
(1-4) STEP4:ファイアウォール設定
ファイアウォールで8443ポートを開放します。OS毎に設定箇所は異なりますが、以下にCentOSの設定方法をご紹介します。
(1-5) STEP5:疎通チェック
最後にTomcatのデフォルトページにアクセスして疎通チェックをします。うまく設定できていれば、以下の両方のURLでTomcatのデフォルトページが表示されるはずです。
http://ik1-336-28337.vs.sakura.ne.jp:8080/ https://ik1-336-28337.vs.sakura.ne.jp:8443/
(図152)HTTPSで疎通②:FireFoxの場合「詳細情報」⇒「危険性を承知で続行」を押下
(図152)HTTPSで疎通③:HTTPSでTomcatデフォルト画面が開いた