Let's EncryptのSSL証明書の自動更新と共にkeystore.jksも自動作成する方法。
関連ページ
参考URL
Let's Encryptは
SSL証明書
を自動更新してくれますが、Tomcatでは、その証明書からkeystoreを作らないと結局サイトが動かなくなります。
いろいろ調べて、renewal-hooksディレクトリ以下に
シェルスクリプト
を置くと、証明書の自動更新直後にそれを実行してくれる事が分かりました。

renewal-hooksを使ったkeystoreの更新
Ubuntu環境であれば、
etc/letsencrypt/renewal-hooks/deploy
の下にシェルスクリプトを置くと、SSL更新と連動してそれが実行されます。
このシェルの中にkeystoreを作成する処理すれば、ユーザーは一切SSLを気にせずにサイトを運用できます。
自分の場合はサイトの運営にTomcatを使っているので、シェルの中身は下のような内容になります。
#!/bin/bash
#
LIVE_PATH=
[letsencrypt/live下のサイトフォルダ]
TOMCAT_PATH=
[tomcatのconfフォルダ]
PASS=
[パスワードの文字列]
CHAIN_PATH="${LIVE_PATH}"
[fullchainのファイル名]
PEM_PATH="${LIVE_PATH}"
[privkeyのファイル名]
P12_PATH="${LIVE_PATH}"
[pkcs12のファイル名]
JKS_FROM_PATH="${LIVE_PATH}"
[keystoreのファイル名]
JKS_TO_PATH="${TOMCAT_PATH}"
[keystoreのファイル名]
sudo
rm
-r
"${P12_PATH}"
#pkcs12ファイルを作成
sudo
openssl
pkcs12
-export
-in
"${CHAIN_PATH}"
-inkey
"${PEM_PATH}"
-out
"${P12_PATH}"
-password
pass:"${PASS}"
#keystoreを作成
sudo
keytool
-importkeystore
-destkeystore
"${JKS_FROM_PATH}"
-srckeystore
"${P12_PATH}"
-srcstoretype
PKCS12
-srcstorepass
"${PASS}"
-deststorepass
"${PASS}"
#keystoreをtomcatへコピー
sudo
mv
-f
"${JKS_FROM_PATH}"
"${JKS_TO_PATH}"
#tomcatを再起動
sudo
service
tomcat
restart
# EOF
keystoreの作成と、その前のpkcs12ファイルの作成には本来サーバ管理者によるパスワードの入力が必要です。
ただパスワードを入力する必要があるならそれは自動更新と言わないので、コードの中にパスワードも押し込んでます。
ルートの実行権限を付与しないとこのシェルスクリプトの実行は成功しません。
また今回の場合パスワードを内部に打ち込むので、セキュリティ上の観点から、chmodでアクセス権限を700にしましょう。

deployのシェルのテスト
実際に証明書が更新された時に、自動でシェルスクリプトが実行されるかテストしてみます。
以下のコマンドを打ち込んください。
sudo certbot renew --dry-run --run-deploy-hooks
成功すると以下のような文言が流れます
Congratulations, all simulated renewals succeeded:
以下のようなエラーが出る場合、certbotのversionが古い可能性があります。最新のcertbotに入れ替えてください。
Certbot can obtain and install HTTPS/TLS/SSL certificates. By default,
it will attempt to use a webserver both for obtaining and installing the
certificate.
certbot: error: argument -v/--verbose: ignored explicit argument 'ersion'
0
0