Let's Encryptからサーバ証明書を取得してTomcatにインポートする方法と自動更新のためのシェル
Let's Encryptも世界に浸透し、みなさんが無料で証明書を取得出来る時代が来ましたね。
日本語で丁寧に解説されているページはこちら。
これを参考にすればサクっと証明書は手に入れられます。
が、期間が短く、3ヵ月で切れてしまうんです。
なにやら自動更新が推奨されている模様。
そこで、自動更新して、勝手に全部やってくれる(であろう)シェルを書きました。
注意点ですが、keytoolコマンドで証明書を入れる際、Let's Encryptから取得したまんまのpemだと、Chromeだと
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
という感じでエラーになりますのでpkcs12で秘密鍵と共に固めます。
もう一点、keytoolのオプションにimportcertってのもあるのですが、それだとkeytoolエラー: java.lang.Exception: 入力はX.509証明書ではありません
というエラーがでます。
あとはcrontabで定期実行を仕掛けて完了です。
上記のサイトでは、60日間毎に更新を薦めているようで、2カ月に1回発火するようにしかけました。
crontab -u root -e
0 * * */2 * sh /<シェルがあるディレクトリ>/<シェル>.sh
こちらのサイトもお世話になりました。
サーバを無停止で更新できるwebrootプラグインを使ったのに、Tomcatは再起動しないと新しい証明書を使ってくれない様で、結局再起動っていうオチ。