Let's EncryptのSSL証明書を手動で更新する方法
無料のSSL証明書発行サービスのLet's Encryptは便利ですが、証明書の有効期限が短いです。
自動的に更新する設定にしていたつもりが、何らかのトラブルによって自動更新されていなかった場合は、緊急措置として手動で更新する必要があります。
Let's EncryptのSSL証明書を手動で更新する方法をメモしておきます。
Let's Encryptとは?
Let's Encrypt(レッツ・エンクリプト)は、2016年4月に正式に開始された認証局である。
自動化された発行プロセスにより、TLSのX.509証明書の発行を無料で行っている。
手動で更新
(参考)以下のページを参考にしました。
作業の準備
- SSHでWebサーバーに接続します。(CentOS+Nginxを使ってます)
- certbot-autoコマンド(Pythonスクリプト)があるディレクトリーに移動します。
- 必要に応じて管理者権限を得ておきます。(su、sudoコマンド等を使います)
(1) 有効期限の確認
$ sudo certbot certificates
これを以下のように変えて入力します。
- コマンドの先頭に「./」を付けています。
- 「./」を付けないでも実行できた場合は「./」は不要ですが、「コマンドが見つからない」みたいなエラーメッセージが出て実行できなかった場合は「./」を付けてみます。
これでSSL証明書の有効期限が確認できました。
期限切れが間近か、すでに切れていたら、とりあえず手動で更新してしまいましょう。
(2) 更新のリハーサル
$ sudo certbot renew --dry-run
・・・略・・・
Congratulations, all renewals succeeded.
・・・略・・・
これを以下のように変えて入力してみます。
まだこの時点では、実際に証明書の更新は行われません。
「--dry-run」というオプションを付けることによって、予行演習(リハーサル)が可能だそうです。
リハーサルでエラー発生の有無を確認しておいて、エラーが出なければ実際に更新を行います。
リハーサルで「Congratulations, all renewals succeeded.」という成功のメッセージが表示されていればOKです。
もしも、うまく更新されなくてエラーが出るようなら、エラーの解決をしておくことになりますね。
(3) 更新の本番
SSL証明書の有効期限が30日未満になっている場合、
$ sudo certbot renew
SSL証明書の有効期限に関わらず、強制的に更新する場合、
$ certbot renew --force-renew
「--force-renew」というオプションを付けると強制的に更新できるみたいです。
ここでは通常の方法で更新してみます。
以下のようにコマンドを入力します。
更新に成功したら、「Congratulations, all renewals succeeded.」というメッセージが表示されます。
念のため、もう一度SSL証明書の有効期限を確認してみます。
有効期限が3カ月延長されていれば、SSL証明書の手動更新は成功です!
(4) Webサーバーの再起動
必要に応じて、Webサーバーを再起動して、更新されたSSL証明書を有効にします。
(例:Nginxの再起動)
(5) 更新の自動化
Let's EncryptのSSL証明書の更新は自動化できます。
もしも、自動化がうまくいってない場合は、設定を見直しておきます。
毎回手動で更新してたら面倒だし、忘れたらヤバイですからね。