WSGIでLet’s Encrypt証明書の更新に失敗するとき

Pythonで作ったWebアプリを公開するとき、Apacheなら次のようなWSGIScriptAliasの記述でリクエストをスクリプトに飛ばします。

WSGIScriptAlias / /var/www/adapter.py

そうするとLet’s Encryptの証明書の更新 (certbot) が上手くいきません。なぜならcertbotの要求に対して外から試行されるWebサーバーへのリクエストもスクリプトに飛ばされてしまうから。

この問題を解決するために、WSGIScriptAliasの上あたりに次のAliasを追記します。

Alias /.well-known /var/www/.well-known

試行では /.well-known にアクセスしてくるので、ここをcertbotが指定するパスに振り向けてあげればスクリプト側ではとくに対処しなくても証明書の更新ができるようになります。
※「/var/www」の部分は環境によって書き換えが必要な場合があります。

Congratulations!!