letsencrypt4

Let’s Encrypt更新でTLS-SNI-01 challengeエラーを回避

2016/10/18[公開] 2016/11/19[最終更新]

 家の自宅サーバーのLet’s Encrypt証明書ですが、未稼働のサブドメインの証明書を発行したり、SANにサブドメインをいろいろ追加登録して試しているうちに、certbot-auto renewコマンドで自動更新しようとしても、Incorrect validation certificate for TLS-SNI-01 challenge.のエラーで更新できなくなってしまいました。

 いろいろ試して、これから利用するかもしれない実在しないサブドメインの証明書でも、cronで自動更新できるようになった設定内容です。Debian Jessieのapache2での内容です。複数サブドメインの証明書を発行した過去記事の続きです。Let’s Encrypt一枚でサブドメイン含む複数ドメインに対応できた

acme-challenge用のディレクトリを作る

 先に設定方法を書きますが、ArchWikiのLet’s Encryptのページを参考にして、Arch linuxのやり方を、Debian Jessieのapache2に置き換えて設定したら上手くいきました。

複数のドメインあるいはサブドメインを使用する場合、全てのドメインに対して、/.well-known/acme-challenge/ への http リクエストを全て一つのフォルダ (例: /var/lib/letsencrypt) にまとめることで、マルチドメインの管理がとても楽になります。

引用:ArchWiki let’s encrypt

/var/lib/letsencryptを作成

 まずは、/var/lib にletsencryptディレクトリを作成します。

 ディレクトリの所有者をapacheに変更しておきます。Debianのapacheの場合は、www-data:www-dataを所有者にします。その他のディストリではapache:apacheになるはずです。

 certbotクライアントのパスから設定したパスに書き込めるようにしておきます。

/etc/apache2/sites-availableに設定

 各ドメイン/.well-known/acme-challenge/へのチャレンジ・レスポンス認証を、/var/lib/letsencryptをエイリアスにまとめることで、複数サブドメインでの管理が楽になるうえに、実在しないこれから利用したいサブドメインのチャレンジ・レスポンス認証も可能にしてくれます。

 /etc/apache2/sites-availableディレクトリに、letsencrypt.confファイルを作成します。ファイルの中身を下記のように記述します。

設定したletsencrypt.confを有効にします。

サービスをリロードして反映させます。

 

Cronで自動更新をしたい

 Let’s Encryptのrenewコマンドで自動更新をさせたいのです。証明書の有効期限が3ヶ月しかないので、だいたい2ヶ月超えたら更新していかないといけません。手動で更新していたら面倒ですし、たぶんそのうちポカして更新を忘れます。

 certbot-auto renewコマンドなら、有効期限残り30日を切っていたら更新、それ以上ならチェックのみで更新見送りしてくれます。これをcronで週一か月一で実行しておけば、証明書の自動更新ができるわけです。

 テスト時には、certbot-auto renew –force-renewal のオプションを付ければ、有効期限残りが30日以上あっても、強制的に更新を実行してくれます。

エラー内容

 実在するドメインのサブドメインだけで発行した証明書のときは、apacheが稼働中でもcertbot-auto renewが成功していたのですが、実在しないサブドメインを含めたとたんに、更新しようとすると下記のようなエラーが出て更新できなくなりました。

 DNSのAレコードの設定を見直せと出ていますが、DNSサーバーのAレコードに、「*」のワイルドカードで*.def-4.comのAレコードを設定しているので、それが原因とは考えられません。

更新できるようになった

 上記の設定をしたところ、certbot-auto renew –force-renewal コマンドで更新成功するようになりました。apacheのリロード無しでブラウザーの有効期限が伸びているのを確認できました。実際にcronに設定したcertbot-auto renewで自動更新が成功するかは、2ヶ月後の動作確認を待つことになりました。(2016/11/18追記)cronでの自動更新成功確認済み

こちらの記事もどうぞ

コメントを残す

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