Let’s Encrypt証明書の更新でエラー


かつては安くても数万円したドメイン証明書がサーバーネームベースが認められてからは、廉価なサービスのリリースが進み、安いものでは数百円までになりましたが、なんといっても値段で比較するなら「無料」のLet’s Encryptが最強でしょう。こちらもサーバーネームベースですよね。もちろん用途によっては不十分な場合もありますので、目的にしっかりあっているかを確認してから導入する必要があることは言うまでもありません。

【90日ごとに更新が必要です】
無料なので致し方ないのですが、これが面倒です。ただし最近では更新コマンドまで提供されていて、crondに登録しておけば、自動更新してくれるはずだったのです。

【あと20日以内にドメインの証明書切れますよ・・の通知メールが届きました】

おかしいなあ。ちゃんとcrondで動作してるはずなのに。

■レスポンスが無いとのことで更新手続きが止まっていた。
とりあえず手動で、crondに登録してあったコマンドを実行

結果エラー。

404エラーが帰ってきてDNSなどをチェックするように警告が出ます。
ネットでイロイロ調べました結果、certbot-autoで実行する場合、従来のwebrootを実行sし、一時的な確認用ページを.well-known/acme-challenge/配下に作成し、そこに外部からhttpでアクセスさせるようなのですが、この設定ファイルのドキュメントルート設定が違っている可能性が高いとのこと。

設定ファイルの場所

見てみると案の定、apacheのデフォルトになってます。私はVirtual Hostを使ってるのでこれではアクセスできない。

早速正しいDocument Rootに変更です。

続いて、「/.well-known/acme-challenge」に外部からアクセスできるようにapacheとディレクトリの設定を行っておきます。

これらを終えた後に、改めてcrondに登録されいたコマンドを手動で実行すると無事、証明書は自動更新されました。

今回はひとまずこれでOKですが、次回はcrondで自動更新させたいですね。

成功です。