Let's EncryptのSSL証明書の自動更新と共にkeystoreも自動作成する方法。
パスワード入力を省略してkeystoreを再配置。
関連ページ
参考URL
Let's EncryptはSSL証明書を自動更新してくれるが、その証明書からkeystoreファイルを作らないと結局サイトが動かなくなる。
このkeystoreの自動更新する方法が分かったのでメモ。
renewal-hooks/deployにシェルスクリプトを配置
自動更新の方法自体は割と簡単。
Ubuntu環境であればetc/letsencrypt/renewal-hooks/deployの下にbashファイルを置くことで解決する。
bashファイルの中身自体は、そのサイトをどのように運営しているか大分変わってくると思う。
自分の場合はサイトの運営に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}"
sudo
rm
-r
"${JKS_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ファイルの作成には本来サーバ管理者によるパスワードの入力が必要。
ただパスワードを入力する必要があるならそれは自動更新と言わないので、コードの中にパスワードも押し込んでる。
bashの中にパスワードを直書きしてるのはセキュリティ的に少しヤバいもしれない。
自分はこれが限界だが知識がある人はもっとセキュアの方法に変えていいかも。
陥りやすい注意点として、ファイルの実行権限がない場合がある。
ls -lのコマンドを打ち込み、所有者の権限のxが有効になっているか確認する。
0
0