Let's Encrypt のTLS-SNI-01から http-01 方式への変更をした備忘録
無料で使えるSSL認証Let's Encrypt から以下の様なメールが来ました。
Action required: Let's Encrypt certificate renewals Hello, Action may be required to prevent your Let's Encrypt certificate renewals from breaking. If you already received a similar e-mail, this one contains updated information. Your Let's Encrypt client used ACME TLS-SNI-01 domain validation to issue a certificate in the past 60 days. Below is a list of names and IP addresses validated (max of one per account): www.livelynk.jp (160.16.207.76) on 2018-12-25 TLS-SNI-01 validation is reaching end-of-life. It will stop working temporarily on February 13th, 2019, and permanently on March 13th, 2019. Any certificates issued before then will continue to work for 90 days after their issuance date. You need to update your ACME client to use an alternative validation method (HTTP-01, DNS-01 or TLS-ALPN-01) before this date or your certificate renewals will break and existing certificates will start to expire. Our staging environment already has TLS-SNI-01 disabled, so if you'd like to test whether your system will work after February 13, you can run against staging: https://letsencrypt.org/docs/staging-environment/ If you're a Certbot user, you can find more information here: https://community.letsencrypt.org/t/how-to-stop-using-tls-sni-01-with-certbot/83210 Our forum has many threads on this topic. Please search to see if your question has been answered, then open a new thread if it has not: https://community.letsencrypt.org/ For more information about the TLS-SNI-01 end-of-life please see our API announcement: https://community.letsencrypt.org/t/february-13-2019-end-of-life-for-all-tls-sni-01-validation-support/74209 Thank you, Let's Encrypt Staff
Google翻訳にかけてみる
必要なアクション:証明書の更新を暗号化しましょう こんにちは、 あなたのLet's Encrypt証明書の更新 が壊れないようにするための行動が必要かもしれません。 すでに同じようなEメールを受け取っている場合は、これには更新された 情報が含まれています。 Let's Encryptクライアント が過去60日間に証明書を発行するためにACME TLS-SNI-01ドメイン検証を使用しました。以下は 検証された名前とIP アドレスのリストです(アカウントごとに最大1つ):2018-12-25の www.livelynk.jp(160.16.207.76) TLS-SNI-01検証は廃止予定です。それは動作を停止します 2月13日、2019年に一時的に、かつ永久月13日に、2019年 それ以前に発行された証明書は90日間働き続ける 彼らの発行日後。 この日までに ACMEクライアントを更新して別の検証方法(HTTP-01、DNS-01、またはTLS-ALPN-01)を使用する必要があります。そうしないと 証明書の更新が中断され、既存の証明書の 有効期限が切れます。 私たちのステージング環境は、すでにあなたが好きなので、もし、TLS-SNI-01無効になってい 2月13日後にシステムが動作するかどうかをテストするために、あなたが実行することができます ステージングに対して:https://letsencrypt.org/docs/s taging環境/ あなたがCertbotユーザーであるならば、あなたはここでより多くの情報を見つけることができます: https://community.letsencrypt。org / t /どうやってtls-snを使うのかi-01-with-certbot / 83210 このフォーラムにはたくさんのスレッドがあります。あなたのかどうかを確認するために検索してください 質問が答えられたら、新しいスレッドを開いてください( https://community.letsencrypt)。org / TLS-SNI-01のサポート終了についての詳細は、当社のAPI 発表 https://community.letsencryptをご覧ください。org / t / 2月13日 - 1919年 - すべてのtls-sni-01- validation-support / 74209 ありがとう、 スタッフを暗号化しましょう
とのことで、従来の検証方法TLS-SNI-01から HTTP-01、DNS-01、またはTLS-ALPN-01 へのいずれかへの変更が必要とのことで、ググって対応しました。
結論から言うと、先人方が既に変更方法を確立されており、同様の方法で事が済みましたが、参考にさせていただいたサイトのリンクと、その方法を張り付けておきます。
サーバー環境はさくらVPSのcentos7となります。
Let’s encryptのドメイン認証の方法をHTTP-01に変更するための準備で試行錯誤した件。
Let’s Encryptの更新エラーを直す(certbot renew失敗)
Let’s EncryptのTLS-SNI-01認証のバリデーションに伴う対応策まとめ
まず サーバーにログインして rootになって Let's Encryptを更新します。
# yum update certbot*
次に以下のサイトを参考に設定変更のコマンドを叩きました
Let’s encryptのドメイン認証の方法をHTTP-01に変更するための準備で試行錯誤した件。
# certbot renew –dry-run –preferred-challenges http-01,dns-01
ところが何やらエラーが
Traceback (most recent call last): File "/bin/certbot", line 5, in <module> from pkg_resources import load_entry_point File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 3011, in <module> parse_requirements(__requires__), Environment() File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 626, in resolve raise DistributionNotFound(req) pkg_resources.DistributionNotFound: acme>=0.29.0
なんかよくわかりませんが、大事な事は最初か最後に書いてあるので、今回は最後の1行でググると以下のサイトの情報に行き当たりました。 Let’s Encryptの更新エラーを直す(certbot renew失敗)
同じエラーが載ってるのでドンピシャです。 手順も全く同じ経緯で原因の特定と解決ができました。
# yum search acme 読み込んだプラグイン:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: mirrors.aliyun.com * extras: ftp.iij.ad.jp * remi-safe: ftp.riken.jp * updates: ftp.iij.ad.jp ====================================================== N/S matched: acme ====================================================== acme-tiny-core.noarch : core python module of acme-tiny python2-acme.noarch : Python library for the ACME protocol acme-tiny.noarch : Tiny auditable script to issue, renew Let's Encrypt certificates dehydrated.noarch : A client for signing certificates with an ACME server Name and summary matches only, use "search all" for everything.
python2-acme.noarch の更新が必要とのことで、epelからupdate
# yum --enablerepo=epel update python2-acme
依存性解決をしてアップデートができました。
再度以下のサイトを参考に本来の目的である、Let's Encrypt のTLS-SNI-01から http-01 方式への変更を行います。
Let’s EncryptのTLS-SNI-01認証のバリデーションに伴う対応策まとめ
本当に最新か確認
# certbot --version certbot 0.29.1
現時点でリンク先のバージョンと同じなので、まず大丈夫でしょう。 そして
新しいバージョンの場合は自動的にHTTP-01の認証が実行されるようです。 とありますが、一応リンク先同様、 -dry-run オプションで更新テストをしてみます。
# certbot renew --dry-run --preferred-challenges http
出力内容
Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processing /etc/letsencrypt/renewal/www.livelynk.jp.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cert not due for renewal, but simulating renewal for dry run Plugins selected: Authenticator apache, Installer apache Starting new HTTPS connection (1): acme-staging-v02.api.letsencrypt.org Renewing an existing certificate Performing the following challenges: http-01 challenge for www.livelynk.jp Waiting for verification... Cleaning up challenges Resetting dropped connection: acme-staging-v02.api.letsencrypt.org - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - new certificate deployed with reload of apache server; fullchain is /etc/letsencrypt/live/www.livelynk.jp/fullchain.pem - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ** DRY RUN: simulating 'certbot renew' close to cert expiry ** (The test certificates below have not been saved.) Congratulations, all renewals succeeded. The following certs have been renewed: /etc/letsencrypt/live/www.livelynk.jp/fullchain.pem (success) ** DRY RUN: simulating 'certbot renew' close to cert expiry ** (The test certificates above have not been saved.) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal.
Performing the following challenges:
http-01 challenge for www.livelynk.jp
//中略
Congratulations, all renewals succeeded. The following certs have been renewed:
翻訳:おめでとうございます、すべての更新は成功しました。以下の証明書が更新されました。
という訳で無事完了。普段サーバーの設定関連は散々ググって悩んで解決するのですが、今回は皆が同じ対応を迫られている時期だったこともあり、とても簡単に問題が解決できました。良かった。