【Let’s Encrypt / KUSANAGI】SSL証明書の自動更新ができず、苦労した話

By | Date : 2016/10/26 | 640 views

皆さんこんにちは、シアです。

本サイトでは、Let’s Encryptを使用しており、自動更新をしていたのですが、その自動更新に問題があったようで、本日未明から、朝方にかけて本サイトで証明書エラー(有効期限切れ)が発生する状態になっていました。

現在は、本サイトのSSL証明書を更新が完了し、正常にアクセスできます。読者の皆様にはご迷惑をおかけしました。

 

1. 自動更新に失敗していた

Let’s Encryptのログ(/var/log/letsencrypt/letsencrypt.log)を見てみると、証明書の更新中にエラーが発生して失敗していたことが分かりました。

こちらは、7月28日の自動更新した時のログです。

2行目のJSONデータに注目してみると、10月の自動更新の時では、パラメーターにwww付きのドメインが加わっていることが分かります。

本サイトの場合、Let’s Encryptで最初に取得した時に、wwwなしのドメインのみを登録していました。なのでおそらく、登録されていないドメインを参照したことで、正しく更新できなかったと考えられます。

 

1.1. KUSANAGI 8.0.0から、SSL周りの処理の仕方が変わっていた件

以下の2つの条件を満たすとき、kusanagi provision で www.example.com と example.com のどちらかを FQDN に指定すると、www.example.com と example.com の両方を VirtualHost として設定します。

  • www.example.com と example.com の両方が、DNS のAレコードに登録されている
  • exmaple.com が whois情報に登録されている

また上記の FQDN の指定に加え、メールアドレスを指定して Let’s EncryptでSSL証明書を取得したとき、www.example.com と example.com の両方を登録したSSL証明書を取得します。

KUSANAGI バージョンアップ情報 8.0.0-2」より引用

本サイトの場合、

  • お名前.comのDNSのAレコードに、chronoir.netとwww.chronoir.netの2つを登録している
  • chronoir.netはwhois情報に登録済み

と、2つの条件を満たしていたので、メールアドレスを指定して Let’s EncryptでSSL証明書を取得処理時に、www付きのドメインも含めていたのです。

 

2. 解決方法

2.1. certbotを直接叩く

今回は、KUSANAGIのコマンドではなくcertbotのコマンドを直接実行することで、取得時に登録したwwwなしのドメインのSSL証明書を更新できました。

certbot-auto renew」を実行すると、取得済みの証明書の中で有効期限が残り30日未満のものを更新します。

あとは、nginxを再起動することで、証明書のエラーを解決することができました。

 

2.2. KUSANAGIのシェルスクリプトを編集する

非推奨ですが、KUSANAGIのシェルスクリプトを編集して、www付きのドメインを除外するという手もあります。

「/usr/lib/kusanagi/lib/ssl.sh」を開きます。

上のコードでの6行目の文から「-d www.$FDQN」を、9行目の文から「-d www.$APEX」取り除きます。

こうすることで、SSL証明書の取得時にwwwなしのドメインのみを対象にすることができます。

 

2.3. 証明書にwww付きのドメインを追加登録

今回のケースの場合、wwwなしのみのドメインから、wwwなしとwww付きの両方のドメインを証明書に登録する必要があるということなので、「/usr/lib/kusanagi/lib/ssl.sh」を開き、下のコードでいう6行目の文に「–expand」を追加します。

これで、www付きのドメインを含めた証明書を取得できると思いきや、まさかの404エラーで認証失敗・・・。

そこで、「/etc/nfinx/conf.d/[プロファイル名]_http.conf」を編集し、www付きのドメインからHTTPアクセスできるようにしたら、SSL証明書を取得できるようになりました。

 

3. おわりに

今回は、Let’s EncryptのSSL証明書の更新エラーを解決し、本サイトのSSL証明書を再び有効にすることができました。

ちなみに、SSL証明書の更新後にQualys’ SSL LABSのSSLテストを実行すると、A+評価が出ました!ひとまず、一件落着です。

ssl2

 

それでは、See you~☆

 

参考サイト

 

経験知さんの記事を見た後、本ブログのサーバー環境のリニューアルを検討しましたが、しばらくは現行サーバーで様子を見ることにしました。

 

この記事をシェアする
Chronoir.netのRSSフィードを購読する

About : シアたん(Xiia)

こんにちはー!時黒(トキクロ)博士によって開発された超高性能アンドロイド「Xiia(シア・クロノワール)」です。Chronoir.net の新マスコットキャラとして頑張っていきますので、よろしくお願いします!☆

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*