投資とプログラミングな日々

投資が趣味なITエンジニアの雑記ブログです。

Let's Encrypt certificate expiration notice メールが来たら、証明書を更新しよう

Let's Encrypt certificate expiration notice~というメールが届きました。

 

f:id:toyo--104:20181021000819p:plain

 

https化したサイトの証明書を更新せよ、という依頼なのです。

3ヶ月で証明書の有効期限が切れてしまうので、更新しないといけません。

証明書の更新方法を解説します。

 

ちなみに、以前は、以下の記事で、https化するために、Let's Encryptを使えば簡単ですよ~という紹介をしてました。まだ自分のWebサイトやブログを、https化していない人は、まずかこちらからはじめて下さいね。

www.toyo104-memo.com

 

Let's Encryptの証明書更新コマンドは簡単

ぼくはLinux CentOS7にインストールしてますので、CentOS7用の手順を書きますね。

証明書を更新するのはすごく簡単、以下のコマンドを発行するだけ。

 

certbot renew
※certbotで動かない場合は、「certbot-auto renew」の場合もあります

 

権限がない場合は、rootにユーザ変更したり、sudo付きで実行しましょう。

 

簡単ですよね。

実際に動かしてみました。

f:id:toyo--104:20181021003813p:plain

順調に動いていくと、最後にrenweals succeeded と出れば、完了です。

f:id:toyo--104:20181021003940p:plain

 

あっという間でした。

 

毎回やるのは面倒&忘れるので、自動更新にしよう

すごく簡単な手順なんですが、毎回やるのは面倒だし、忘れて証明書が失効するかもしれません。

自動更新の設定を入れておくといいですよ。

ぼくはLinux CneOS7用の手順を書きます。

 

まずは自動更新の実行用スクリプトを準備

自動更新をするためのスクリプトを準備します。

今回は「update.sh」というファイルで準備しました。

#!/bin/bash
PATH=$PATH:/usr/sbin/
certbot renew

 

これはbashというシェル(=Linuxのコマンドをまとめたもの)で書いています。

1行目では、bashを使っているという宣言をしています。

2行目パスを追加しています。cronで実行するときと、ログインして実行するときはパスが異なります。ぼくは動作確認をしたときに、/usr/sbinにパスが通っていなくて失敗したので追記しました。

3行目は「certbot renew」コマンドです。

ぼくはこの「update.sh」ファイルを「~root/letsencrypt」の下に保存しました。

実行権限を追加

ただファイルを作っただけだと権限がないので、

chmod 755 ~root/letsencrypt/update.sh

 

などとコマンドを打って権限を追加しましょう。

cronを使おう

cronという、決まった時間に決まったコマンドを発行する便利な仕組みがあります。

これを活用します。

 

cron設定をするには、crontabコマンドを使います。

下のように、crontabに -eオプションをつけて実行します。

 

crontab -e

 

そうすると、入力ページが下のように出てきます。

f:id:toyo--104:20181021005117p:plain

「i」ボタンを押して、編集モードにします。

f:id:toyo--104:20181021005214p:plain

 

下のように、設定を入力してください。

0 0 1 * * ~root/letsencrypt/update.sh

 

解説すると、左から実行する

・分

・時

・日

・月

・曜日

・コマンド

を並べます。

 

この例では、

「0分 0時 1日 すべての月 全ての曜日 に~root/letsencrypt/update.shを実行」

という意味になります。

要は、毎月1日の0時0分に、「certbot renew」コマンドで、証明書を更新するのです。

 

書き終わったら、「:(コロン)wq」と押して下さい。

f:id:toyo--104:20181231010107p:plain

これでウインドウが閉じて、保存完了です。

便利ですよね!活用してみてください。