TomcatのWebアプリケーションマネージャ(manager)でSSL対応(https)をする方法

TomcatのWebアプリケーションマネージャ(manager)でSSL対応(https)をする方法

TomcatでSSL対応(https)をするには、まずSSL証明書を用意し、その証明書をTomcatの設定に組み込む必要があります。
以下は、TomcatのWebアプリケーションマネージャー(manager)でSSL対応を行う手順です。

1. SSL証明書の取得
SSL通信を行うには、まずSSL証明書が必要です。
証明書は、認証局(CA)から取得するか、自分で作成することもできます。
一般的には、認証局からの証明書を取得することが推奨されます。
証明書の取得後、証明書ファイル(通常は .crt や .pem)と秘密鍵ファイル(通常は .key)が手に入ります。

2. 証明書と秘密鍵をキーストアに変換
Tomcatは、Javaのキーストア形式(通常は .jks)でSSL証明書を扱います。
そのため、証明書と秘密鍵をキーストアに変換する必要があります。
これには keytool コマンドを使用します。
以下は、証明書をキーストアにインポートするコマンドの例です。

keytool -import -alias tomcat -keystore /path/to/keystore.jks -file /path/to/certificate.crt

秘密鍵が別ファイルとして提供されている場合、最初に秘密鍵と証明書をPKCS12形式に変換し、その後キーストアにインポートする必要があります。
これには openssl コマンドと keytool コマンドを使用します。

openssl pkcs12 -export -in /path/to/certificate.crt -inkey /path/to/private.key -out /path/to/keystore.p12 -name tomcat
keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore /path/to/keystore.jks -srckeystore /path/to/keystore.p12 -srcstoretype PKCS12 -alias tomcat

3. Tomcatの設定ファイルを編集
Tomcatの設定ファイルである server.xml を編集して、SSL接続を有効にします。
server.xml は通常 TOMCAT_HOME/conf/ ディレクトリにあります。
次のように設定します。

<Connector port="8443" protocol="HTTP/1.1"
           maxThreads="150"
           scheme="https" secure="true" SSLEnabled="true"
           keystoreFile="/path/to/keystore.jks"
           keystorePass="changeit"
           clientAuth="false" sslProtocol="TLS"/>
  • port:SSL通信に使用するポート番号です。

通常は 443 が推奨されますが、テスト環境などでは 8443 を使用することもあります。

  • keystoreFile:先ほど作成したキーストアファイルへのパスです。
  • keystorePass:キーストアのパスワードです。
  • sslProtocol:使用するSSL/TLSプロトコルのバージョンです。

最新のプロトコル(例えば TLSv1.3)を指定することが推奨されます。

4. Tomcatの再起動
設定を変更した後は、Tomcatを再起動して変更を適用します。
Tomcatの再起動には、以下のコマンドを使用します。

$TOMCAT_HOME/bin/shutdown.sh
$TOMCAT_HOME/bin/startup.sh

5. 動作確認
Tomcatが再起動したら、ブラウザで https://your-server-address:8443 にアクセスして、SSL接続が正常に動作しているかを確認します。
証明書のエラーが表示される場合は、証明書の設定やキーストアの内容を再確認してください。

この手順に従ってSSL対応を行うことで、TomcatのWebアプリケーションマネージャーでもHTTPSによるセキュアな通信が可能になります。