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/html
やhttps://localhost:8443/manager/html
で管理画面にアクセスするにはユーザを追加します。
conf\tomcat-users.xml
のtomcat-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の場合)
ブラウザを使って証明書を保存する
- アドレスバー左の"保護されていない通信"をクリック
- 証明書をクリック
- 詳細タブ>ファイルにコピーボタン
- 次へボタン
- DER encoded binary X.509 (.CER) 選択>次へボタン
- エクスポートファイル名を入力して次へボタン
- 完了ボタン
インポート
エクスポートした証明書(cerファイル)をGoogle Chromeでインポートします。
- 設定
- プライバシーとセキュリティ>セキュリティ
- 証明書の管理
- インポート
- 次へボタン
- エクスポートした証明書(cerファイル)を選択し、次へボタン
- 証明書をすべて次のストアに配置する>参照ボタン>信頼されたルート証明機関を選択
- 次へボタン
- 完了ボタン
- はい
- Google Chromeを再起動する
OpenSSLで作成した証明書を使う場合
事前にOpenSSLで作成したserver-key.pem
, server-crt.pem
をconfフォルダ
に格納します。
<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フォルダ
に格納しました。