甘党男子

日々おもしろいと思ったことを軽く考察。

Let's Encryptからサーバ証明書を取得してTomcatにインポートする方法と自動更新のためのシェル

Let's Encryptも世界に浸透し、みなさんが無料で証明書を取得出来る時代が来ましたね。

日本語で丁寧に解説されているページはこちら。

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

blog.apar.jp

こちらのサイトもお世話になりました。

サーバを無停止で更新できるwebrootプラグインを使ったのに、Tomcatは再起動しないと新しい証明書を使ってくれない様で、結局再起動っていうオチ。