[LetsEncript] 自動更新エラーでてんやわんやの巻

2023年11月20日

サーバー セキュリティ トラブル

eyecatch みなさんが大好きなトラブル報告の回です。 独自にサーバーを立てて、webサイトを公開している場合、自分でメンテナンスをしなければいけません。 ましてや昨今では、http://~~という非セキュアなwebサイトは基本的に排除される勢いでの否定をされるので、 https://~~のTLSセキュリティ化しなければいけません。 まあ、多くの場合が、Let'sEncriptサービスを使っていると思うので、無料で利用はできるのですが、3ヶ月毎に更新をしなければいけないので、cronバッチにて、自動更新する処理をしている人も多いでしょう。

Let'sEncryptからのメール

かくゆう自分も自動更新している派なんですが、珍しくLet'sEncriptからメールが届きまして、次のような内容でした。 Hello, Your certificate (or certificates) for the names listed below will expire in 6 days (on 2023-10-04). Please make sure to renew your certificate before then, or visitors to your web site will encounter errors. We recommend renewing certificates automatically when they have a third of their total lifetime left. For Let's Encrypt's current 90-day certificates, that means renewing 30 days before expiration. See https://letsencrypt.org/docs/integration-guide/ for details. わかりやすく訳すと、 おい、お前 証明書が切れる6日前やで!ちゃんと更新せんかいボケ! ウチらのサービスは、90日ごとに更新せんといかんのやで。でもな、30日前からやないと更新できないから注意しいや! 詳しくはホームページみといて。 自動更新しているのに、このメールが届くということは、何やら更新が失敗した証拠だということは、即座に理解できました。

サーバーで手動更新作業

仕事の合間に、少し時間があったので、Let'sEncrypt証明書の自動更新が失敗したサーバーにログインして、手動で更新コマンドを実行してみることにしました。 すると・・・ $ sudo certbot renew Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processing /etc/letsencrypt/renewal/example.com.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cert is due for renewal, auto-renewing... Plugins selected: Authenticator webroot, Installer None Renewing an existing certificate Performing the following challenges: http-01 challenge for example.com Waiting for verification... Cleaning up challenges Attempting to renew cert (example.com) from /etc/letsencrypt/renewal/example.com.conf produced an unexpected error: Failed authorization procedure. example.com (http-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: 192.168.1.1: Invalid response from https://example/.well-known/acme-challenge/tUX5u-WQKvqKjVPnpqTADnEuhM3Qy7MtE-XLQKLk2xc: 404. Skipping. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The following certs are not due for renewal yet: /etc/letsencrypt/live/example.com/fullchain.pem (failure) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 renew failure(s), 0 parse failure(s) IMPORTANT NOTES: - The following errors were reported by the server: Domain: example.com Type: unauthorized Detail: 192.168.1.1: Invalid response from https://example.com/.well-known/acme-challenge/tUX5u-WQKvqKjVPnpqTADnEuhM3Qy7MtE-XLQKLk2xc: 404 To fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA record(s) for that domain contain(s) the right IP address. ``` ※example.comは、対象のドメインを変換しています。 ※IPアドレスは、 192.168.1.1に変換しています。 ふむふむ、なるほどなるほど、あれがこーなって、そうなっているワケね・・・ って、なんやねんこれ、ワケわからんやんけ! とにかく失敗しているということだけはわかる。

解決編

でも、このエラー良く見ていると、ポイントは、以下の場所にあるみたいだとわかった。 Domain: example.com Type: unauthorized Detail: 192.168.1.1: Invalid response from https://example.com/.well-known/acme-challenge/tUX5u-WQKvqKjVPnpqTADnEuhM3Qy7MtE-XLQKLk2xc: 404 公開サーバーで、 https://example.com/.well-known/acme-challenge/tUX5u-WQKvqKjVPnpqTADnEuhM3Qy7MtE-XLQKLk2xc というリンクが404(Not foundでアクセスできないよ)エラーになっているらしい。 ん?そんなファイル置いてないぞ?! あ、そうか!Let'sEncryptって、対象のサイトに更新時に自動的にファイルを作って、それが正常に公開されるかということで、公開サーバーを担保しているというチェックがはいるんだった! んでもって、このファイルにアクセスできないのはなんで???? あ、以前.git対応でやった、.(ドット)から始まるファイルへのアクセスを禁止していたんだった! その時書いたブログ: Repo Lookout Reporterからのメール この時に、.gitだけじゃなくて、.(ドット)から始まるファイル(フォルダ)へのアクセスを全て断ち切っていたのを思い出しました。 先程のURLを良く眺めると、~~/.well-known/~~と、.(ドット)付きのファイルにアクセスしようとしてコケているようだ。 というわけで、Nginxを書き直して、無事にLet'sEncryptが正常更新できるようになったとさ。

あとがき

ちょうど三ヶ月前にやった操作での不具合報告という結果になり、思い出すのに時間がかかりましたが、三ヶ月前にはこんな事が起きるとは思いも寄りませんでした。 でも、こういうのサーバー運用であるあるだよな〜と思って、お客さんのサービスで使わなくてよかった!と胸をなでおろした今日の自分でした。 また同じエラーが出た時は、この記事で思い出すんだろうな〜という思い出未来の自分への手紙的な今日のブログでした。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ