Apache Tomcat覚え書き(SSL化など)

Apache Tomcatのインストールから設定方法のメモ。

利用したバージョン

  • Tomcat 9
  • JDK11
  • Google Chrome 89.0.4389.90

インストール

インストールは次のサイトからダウンロードしたzipファイルを解凍して任意のフォルダに配置するだけです。
Apache Tomcat

今回はTomcat 9を利用しています。

環境変数の追加

次の環境変数を追加します。

変数名 内容
CATALINA_HOME Tomcatのインストールフォルダ C:\tomcat\tomcat9
JAVA_HOME jdkのインストールフォルダ C:\Program Files\Java\jdk-11
Path %CATALINA_HOME%\bin
%JAVA_HOME%\bin
-

設定

サーバーログの文字化けを直す

コンソールに表示される日本語の文字化けを直すには、コンソールに出力される文字コードをUTF-8からShift_JISに変更します。
conf\logging.propertiesを次のように修正します。

修正前

java.util.logging.ConsoleHandler.encoding = UTF-8

修正後

java.util.logging.ConsoleHandler.encoding = SJIS

ユーザ追加

http://localhost:8080/manager/htmlhttps://localhost:8443/manager/htmlで管理画面にアクセスするにはユーザを追加します。

conf\tomcat-users.xmltomcat-users要素に次のような内容を追加します。

  <role rolename="manager-gui"/>
  <user username="tomcat" password="s3cret" roles="manager-gui"/>

デプロイ

appBase(webapps)にwarファイルを置きます。更新時、サーバー起動前なら、既に展開済みのフォルダを消します。
appBaseがどこかはconf/server.xmlに記載されています。デフォルトはwebapps

サーバーの起動と停止

サーバーの起動

bin\startup.batを実行する。

サーバーの停止

bin\shutdown.batを実行する。

SSL化

httpsでアクセスできるようにする方法。
conf\server.xmlでコメントアウトされているConnectorを有効にし、<SSLHostConfig>内を書き換えることでSSLを有効にします。

protocol="org.apache.coyote.http11.Http11NioProtocol"の方を有効にします。

keystoreファイルを使う場合

keystoreファイルの作成方法については後述します。

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/inksv.keystore"
                         certificateKeystorePassword="changeit"
                         certificateKeyAlias="tomcat"
                         certificateKeystoreProvider="SUN"
                         certificateKeystoreType="PKCS12"/>
        </SSLHostConfig>
    </Connector>

ブラウザ接続時に警告が表示されます。暫定的に警告を解除したい場合は次の手順が簡単です。(Google Chromeの場合)

ブラウザを使って証明書を保存する

  1. アドレスバー左の"保護されていない通信"をクリック .cerエクスポート
  2. 証明書をクリック .cerエクスポート
  3. 詳細タブ>ファイルにコピーボタン .cerエクスポート
  4. 次へボタン
  5. DER encoded binary X.509 (.CER) 選択>次へボタン
  6. エクスポートファイル名を入力して次へボタン
  7. 完了ボタン

インポート

エクスポートした証明書(cerファイル)をGoogle Chromeでインポートします。

  1. 設定
  2. プライバシーとセキュリティ>セキュリティ
  3. 証明書の管理
  4. インポート
  5. 次へボタン
  6. エクスポートした証明書(cerファイル)を選択し、次へボタン
  7. 証明書をすべて次のストアに配置する>参照ボタン>信頼されたルート証明機関を選択
  8. 次へボタン
  9. 完了ボタン
  10. はい
  11. Google Chromeを再起動する

OpenSSLで作成した証明書を使う場合

事前にOpenSSLで作成したserver-key.pem, server-crt.pemconfフォルダに格納します。

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeyFile="conf/server-key.pem"
                         certificateFile="conf/server-crt.pem"
                         type="RSA"/>
        </SSLHostConfig>
    </Connector>

keystoreファイルの作成

コマンドプロンプトからJDKのkeytoolを使用し、keystoreファイルを作成します。
古いJDKではSAN(Subject Alternative Name)の指定ができない場合があるので注意してください。
次のコマンドを実行します。

keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -validity 36500 -ext SAN=dns:sample.tomcat.local,ip:192.168.33.1 -keystore sample.keystore

パスワードはchangeitとしました。
CN(姓名)はFQDN(今回はdnsと同じ)を入力、他は全てエンターでも問題ありません。

ここで、-keystore <ファイル名>を指定しなかった場合は、.keystoreファイルがユーザフォルダ(`C:\Users\<ユーザ名>)に作成されます。

作成したkeystoreファイルを任意の場所に格納します。今回はtomcatインストールフォルダのconfフォルダに格納しました。

参考

このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です