JavaScript勉強会

JavaScriptの学習日記

Let's EncryptのSSL証明書を手動で更新する方法

無料のSSL証明書発行サービスのLet's Encryptは便利ですが、証明書の有効期限が短いです。

自動的に更新する設定にしていたつもりが、何らかのトラブルによって自動更新されていなかった場合は、緊急措置として手動で更新する必要があります。

Let's EncryptのSSL証明書を手動で更新する方法をメモしておきます。

 

Let's Encryptとは?

Let's Encrypt - Wikipedia

Let's Encrypt(レッツ・エンクリプト)は、2016年4月に正式に開始された認証局である。

自動化された発行プロセスにより、TLSのX.509証明書の発行を無料で行っている

 

letsencrypt.org

 

f:id:jsstudy:20190317210204p:plain

 

手動で更新

(参考)以下のページを参考にしました。

programmingnavi.com

 

作業の準備

  1. SSHでWebサーバーに接続します。(CentOS+Nginxを使ってます)
  2. certbot-autoコマンド(Pythonスクリプト)があるディレクトリーに移動します。
  3. 必要に応じて管理者権限を得ておきます。(su、sudoコマンド等を使います)

 

(1) 有効期限の確認

$ sudo certbot certificates

 

これを以下のように変えて入力します。

 

./certbot-auto certificates

 

  • コマンドの先頭に「./」を付けています。
  • 「./」を付けないでも実行できた場合は「./」は不要ですが、「コマンドが見つからない」みたいなエラーメッセージが出て実行できなかった場合は「./」を付けてみます。

 

これでSSL証明書の有効期限が確認できました。

期限切れが間近か、すでに切れていたら、とりあえず手動で更新してしまいましょう。

 

(2) 更新のリハーサル

$ sudo certbot renew --dry-run

 

・・・略・・・
Congratulations, all renewals succeeded.
・・・略・・・

 

これを以下のように変えて入力してみます。

 

./certbot-auto renew --dry-run

 

まだこの時点では、実際に証明書の更新は行われません。

「--dry-run」というオプションを付けることによって、予行演習(リハーサル)が可能だそうです。

 

リハーサルでエラー発生の有無を確認しておいて、エラーが出なければ実際に更新を行います。

リハーサルで「Congratulations, all renewals succeeded.」という成功のメッセージが表示されていればOKです。

 

もしも、うまく更新されなくてエラーが出るようなら、エラーの解決をしておくことになりますね。

 

(3) 更新の本番

SSL証明書の有効期限が30日未満になっている場合、

$ sudo certbot renew

 

SSL証明書の有効期限に関わらず、強制的に更新する場合、

$ certbot renew --force-renew

 

「--force-renew」というオプションを付けると強制的に更新できるみたいです。

 

ここでは通常の方法で更新してみます。

以下のようにコマンドを入力します。

./certbot-auto renew

 

更新に成功したら、「Congratulations, all renewals succeeded.」というメッセージが表示されます。

 

念のため、もう一度SSL証明書の有効期限を確認してみます。

./certbot-auto certificates

 

有効期限が3カ月延長されていれば、SSL証明書の手動更新は成功です!

 

(4) Webサーバーの再起動

必要に応じて、Webサーバーを再起動して、更新されたSSL証明書を有効にします。

(例:Nginxの再起動)

service nginx restart

 

(5) 更新の自動化

Let's EncryptのSSL証明書の更新は自動化できます。

もしも、自動化がうまくいってない場合は、設定を見直しておきます。

毎回手動で更新してたら面倒だし、忘れたらヤバイですからね。

 

 

 

イラスト図解式 この一冊で全部わかるセキュリティの基本

イラスト図解式 この一冊で全部わかるセキュリティの基本