headAD

2019/05/29

Raspbian Stretch - Certbot 証明書の自動更新


https://certbot.eff.org/


さて、前回までに certbot をインストールしましたが、それと同時に自動更新の仕組みもセットされています。

Let's Encrypt 証明書を入手するために、certbot-auto を使うなど初期の頃は cron.d にセッティングしたり、面倒なんで3ヶ月置きに renew していましたが、これも必要ありません。
(2016年後半にはかなり進化したようですが、Raspbianには降りて来てなかったのかなぁ)

Raspbian(Debian) Stretch へ certbot をインストールすると systemd 配下へ certbot.timerが組み込まれ、これにより定期的に renew が行われます。

/lib/systemd/system/certbot.timer
[Unit]
Description=Run certbot twice daily

[Timer]
OnCalendar=*-*-* 00,12:00:00
RandomizedDelaySec=43200
Persistent=true

[Install]
WantedBy=timers.target

/lib/systemd/system/certbot.service
[Service]
Type=oneshot
ExecStart=/usr/bin/certbot -q renew
PrivateTmp=true

毎日2回、0時と12時を基準に、43200秒(12時間)以内のランダムな時刻に certbot renew を実行するようです。
一日2回は多いのかと思いましたが、certbot の推奨です。

renew は証明書の期限30日前になると更新されるようです。

ログを見ると、朝・晩と renew でチェックされていますが、今後どのタイミングで更新されるか楽しみです。



*****
(2019-07-20追記)
証明書期限のちょうど30日前で、証明書の更新が行われました。正しく実行できているようです。


.end

2019/05/20

Raspbian Stretch - Certbot 更新ができない(2)

(2019-5-28に記事の追加と修正を行いました)

https://certbot.eff.org/


本家 certbot ページにこんなことが書いてありましたと、前回の記事の最後に書きました・・・
システムが Debian Stretch なら、certbot をバックポートリポリトジを有効にしてインストールしなさい。
そう、証明書更新は certbot-auto を以前からずっと使っていて、前回までなにも問題なかったのに・・・。
certbot-auto ではダメらしいです。

Debian8(Jessie) の時点で Let's Encrypt から証明書を入手するのに certbot-auto を使ってきた名残で Debian9(stretch) になっても、certbot-auto をそのまま引きずっていたんですね。
では、certbot をインストールしてみます。

>バックポートリポリトジを有効にする

Raspberry Pi では少し面倒です。key が必要となるので順にコマンドを与えます。
手入力だと間違えやすいので、一行ごとにコマンドラインへコピペしてください。

sudo apt install dirmngr
gpg --keyserver pgpkeys.mit.edu --recv-key  8B48AD6246925553
gpg -a --export 8B48AD6246925553 | sudo apt-key add -
gpg --keyserver pgpkeys.mit.edu --recv-key  7638D0442B90D010
gpg -a --export 7638D0442B90D010 | sudo apt-key add -



次に /etc/apt/sources.list ファイルへ、次の一行をエディターで追加します。
deb http://deb.debian.org/debian stretch-backports main contrib non-free

この後、 sudo apt update を行ってください。
これで、バックポートリポリドジが有効となりました。


>certbot をインストールする

この後は、certbot インストールの手順を行えばokです。
ここでは、Apacheのプラグインを使用するオプションを付加します。
sudo apt-get install certbot python-certbot-apache -t stretch-backports

certonly で Apacheサーバー設定はせず証明書のみを取得します。
sudo certbot --apache certonly

--dry-run オプションを付けて、更新テストを行います。
sudo certbot renew --dry-run

成功すれば、次のようなメッセージとなります。

** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:
   /etc/letsencrypt/live/***.***.***/fullchain.pem (success)
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates above have not been saved.)



次回は、自動更新の箇所に触れてみます。

.end

2019/05/19

Raspbian Stretch - Certbot 更新ができない

https://letsencrypt.org/




 ラズベリーパイによる Web サーバーを運用中で、https 対応のサーバー証明書は Let's Encrypt から取得しています。

Let's Encrypt の証明書は3ヶ月の有効期限しかなく、期限前に更新する必要があるので点検も兼ねて更新しようとすると、エラーを吐いて更新が完了しなくなっていました。

前回(2019/3)の更新も含めてこれまて何の問題も発生していません。このままでは来月には期限来てしまうので、早めの対処をすることにしました。


https://certbot.eff.org/



条件は次の通り
・Raspbian Stretch (RaspberryPi  Debian9 )
・Apatch2.4 Webサーバー
・Let'S Encrypt の certbot-auto で証明書更新

これを見て、「はは~ん」と思った方は経験済みなんですね。対策はご想像の通りですが順を追って説明します。



エラーの発生状況
いつものように dry-run オプション付きで確認
./certbot-auto renew --dry-run

そうすると
Creating virtual environment...
Installing Python packages...
Had a problem while installing Python packages. <-- Pythonで問題が

pip prints the following errors:
========================================
Collecting ConfigArgParse==0.14.0 (from -r /…..
   Downloading https://files.pythonhosted.org/….
Collecting asn1crypto==0.24.0 (from -r /….
   Downloading https://files.pythonhosted.org/

これが、ずっと続く…

Python パッケージのバージョンが満たされておらず pip がエラーとして表示しているようです。
ググると、こんな裏技がありました。
/etc/pip.conf
このファイルを削除すれば ok だよ~。
いやいや、削除はダメでしょ。リネームしましょ。今回限りということで。
実際にやってみると、上手くいきました。

ハイ、これで終了。じゃなかった。

他にググると、本家 Let's Encrypt にこんなことが書いてありました。
システムが Debian Stretch なら、certbot をバックポートリポリトジを有効にしてインストールしなさい。
そう、証明書更新は certbot-auto を以前からずっと使っていて、前回までなにも問題なかったのに・・・。



certbot-auto ではなくて certbot をインストールすべきです。  
では、次回これを行ってみます。


.end