Blog Detail

Let's Encrypt Logo

Let’s Encrypt サーバー証明書の更新

2016年12月30日
Linux, ウェブ開発
, , ,
No Comments

Let’s Encryptが発行してくれるサーバー証明書は、有効期限が3ヶ月間と短いものです。
わりと頻繁に更新作業を行わなければいけませんが、サーバー証明書取得時と同じく簡単に行う事が出来ます。

今回はサーバー証明書の更新作業を行ってみます。

前回、Let’s Encrypt サーバー証明書取得時の記事はこちら

無料でサーバー証明書を取得してウェブサイトを暗号化しよう!Let’s Encrypt!

 

Let’s Encryptからの通知

Let’s Encryptから取得したサーバー証明書の有効期限の終わりに近づいてくると、以下の様なメールで通知してくれます。

親切です!\(^o^)/
取得時に登録するメールアドレスは、間違いなくちゃんと受信可能なアドレスを登録しておきましょう。

更新時の認証処理

Let’s Encryptのサーバー証明書更新時にも新規取得時と同じく「ドメイン使用権者の認証」処理が行われる様です。
新規取得時に「--standalone」オプションを指定した場合は、取得時と同様にウェブサーバーが起動中の場合は一時的に停止させておく必要があります。

ウェブサーバーを起動したまま更新処理を行うと以下の様なエラーが発生します。

この場合はウェブサーバーを停止させ、ポート80を未使用の状態にしましょう。

新規取得時と同じ手順、環境を作ればOKという事です。

更新コマンドの実行

certbot renew」のコマンドで取得済の全てのサーバー証明書の更新を行えます。

複数のサーバー証明書を取得している場合、指定した証明書のみ更新したい場合があると思いますが、
現時点で、renewオプションでは指定した証明書のみ更新という事は対応出来ない様です。
これを行いたい場合はcertonlyオプションを指定して同じ内容で取得し直す事になる様です。

今回は renewオプションでおまかせ更新をやってみます。

成功しました!\(^o^)/

証明書の確認

関係するファイルは /etc/letsencrypt/ 下に格納されています。

/etc/letsencrypt/archive/<ホスト名>/ 下には取得した証明書や秘密鍵が格納されています。
ファイル名に数字が付いているのは、履歴を表すものです。初回に取得したものは「1」、今回取得したものは「2」という具合です。

/etc/letsencrypt/live/<ホスト名>/ 下には最新のファイルへのシンボリックリンクが作成されます。
今回取得(更新)した「2」番のファイルへそれぞれシンボリックリンクが張られているのが解ります。

ウェブサーバーの設定にはこのシンボリックリンクのパスを設定しておくと、常に最新の設定ファイルを利用する様に設定できるという事です。

証明書の中身も確認しておきましょう。

有効期限が更新されていればOKです。

 

certbotコマンドを使用した Let’s Encryptのサーバー証明書の更新は、新規取得時と同じくとても簡単に行なえます。
これなら3ヶ月毎に作業が発生しても苦ではないですね!\(^o^)/

 

自動更新について

Let’s Encryptの情報を検索しますと、サーバー証明書の自動更新の設定についての解説を多く目にします。
内容はCRONへの設定の仕方というものです。

私の環境では以下の2点の理由で自動更新は行わない事にしました。

  1. Let’s Encryptサーバーの負荷を考慮

    Let’s Encryptのサービスは無料で提供して頂いているものです。スポンサーは付いているものの潤沢な資金の元で運用されているプロジェクトでは無いでしょう。
    プロジェクトが安定してずっと存続可能な様に、そして私達がこのプロジェクトの恩恵をずっと受けられる様に、プロジェクトの負担は出来るだけ少なくしてあげたいものです。
    これからもLet’s Encryptの利用者は増え続けると思いますが、サーバー証明書取得時や更新時に発生するLet’s Encryptサーバーへの接続が増えれば、それに伴いサーバーの増強も必要になってきます。
    できるだけLet’s Encryptサーバーの負荷を減らしてあげたい為、当方はCRONから自動更新処理を起動(Let’s Encryptサーバーへ問い合わせが発生)させる様な事は致しません。
    CRONに設定するな、とは言いませんが、出来るだけ長い間隔で設定したいものです。1週間に一度程度走る様にするのが良いのではないでしょうか。

  2. 当方のネットワーク構成上の理由

    当方のネットワークは、ローカルIPを振ったDMZにいくつかのウェブサーバー機(OSやハード(物理or仮想)などさまざま)があり、インターネットからのアクセスはゲートウェイ機にリバースプロキシーとして設定したウェブサーバーからドメイン別に割り振ってアクセスさせる、という構成になっています。
    certbotコマンドを実行してLet’s Encryptのサーバー証明書取得を行っているマシンは、このDMZに接続しているマシンで、そのままでは外部から直接ポート80や443で接続を受ける事が出来ません。
    作業を行う際には一時的にゲートウェイ機にポートフォワードの設定を行って、外部(Let’s Encryptサーバー)からの接続を作業するマシンに飛ばしてくる事で対応しています。
    更新処理を自動化出来ない訳ではないですが、複数のマシンの設定を変更する必要があり、また他のサーバーの広範囲へ影響する為、慎重を期して手作業で行う事にします。

 

Leave A Comment