simp_leによるLet’s Encryptの証明書の取得
概要
先日,CertbotによるLet’s Encryptの証明書の取得方法を記した。今回は,ACMEクライアントとしてCertbotとは異なるsimp_leを使った方法を記す。
当初Let’s Encryptでの証明書の発行への挑戦時には,Certbotをユーザー権限で実行できることに気づかなかった。そのため,root権限以外での実行に公式サイトで推奨されていたクライアントのsimp_leでの証明書の発行を行っていた。
なお,simp_leと同じく推奨されていたacme-nosudoは手順の中でWebサーバーと通信する際に,管理者権限が必要だったため断念した。
simp_leでの発行ができ,手順の整理中に気になって試したところ,Certbotでも発行できた。結果として,simp_leはワイルドカード証明書の発行に対応しておらず,Certbotの下位互換になるのでCertbotを使ったほうがいい。
ただ,せっかく調べたのでsimp_leでの証明書の発行手順も記す。
以下のサイトを参考にした。
インストール
まず,simp_leをインストールする。
simp_leもCertbotと同じくPython3で動作するので,事前にPython3をインストールしておく。
Python3を用意できたら,pip3
を使い以下のコマンドでインストールする。
pip3 install --user git+https://github.com/zenhack/simp_le@0.18.1#egg=simp_le
今回は0.18.1をインストールした。
証明書の取得
インストールできたので,コマンドを実行して証明書を取得する。
mkdir -p ~/.local/etc/simp-le
cd ~/.local/etc/simp_le
simp_le -f account_key.json -f account_reg.json \
-f fullchain.pem -f key.pem \
--email contact@example.com -d aws.senooken.cf:/var/www/html
-f
で指定しているファイルはコマンド実行時に勝手に生成される。
重要なのは,3行目の--email
と-d
だ。これらのオプションで,メールアドレスとドメイン名・DocumentRootを指定する。
コマンドの実行に成功すると,証明書と秘密鍵がそれぞれfullchain.pem
とkey.pem
に生成される。Webサーバーの設定でこれらを参照すればいい。
証明書の更新
Certbotと異なり,simp_leでの証明書の更新は同一のコマンドで行う。
Certbotと同じく以下のコマンドでcrontabに1か月おきに実行されるように登録しておけばいいだろう。
crontab <<-"EOT"
* * * */1 * (cd /home/senooken/.local/etc/simp_le; simp_le -f account_key.json -f account_reg.json -f fullchain.pem -f key.pem --email contact@example.com -d aws.senooken.cf:/var/www/html >/dev/null)
EOT
標準出力が表示されないように,コマンドの末尾に>/dev/null
だけを追加した。
最後に,cronを再起動する。
sudo systemctl restart cron
結論
simp_leによるLet’s Encryptの証明書の取得方法を記した。
今回は,Certbotをユーザー権限で使えないという勘違いからsimp_leの使い方を調査した。
simp_leのほうが作りがシンプルになっている利点があるが,ワイルドカード証明書に対応していないという欠点がある。やはり,基本的には公式が推奨しているCertbotを使ったほうがいいだろう。