Certbot renew時に「ascii codec can’t decode…」とエラーが出る際の対処方法

Let's Encryptの証明書を更新する際に「certbot-auto renew」コマンドを実行するのですが、下記のエラーが出て更新失敗した時の対処法をメモしておきます。

produced an unexpected error: 'ascii' codec can't decode byte 0xe3 in position 22: ordinal not in range(128)

エラーの原因

エラーの原因としてはnginxのコンフィグファイルに日本語でコメントなどが記述されている場合にエラーが発生するようです。

エラーの対処法1

nginxのコンフィグファイルと、呼び出しているコンフィグファイルから、日本語部分を削除することでエラーは発生しなくなります。

エラーの対処法2

日本語のコメントを残しておきたい場合、以下の手順により対処可能です。

site-packagesディレクトリ内にsitecustomize.pyというファイルを作成する。

Let's EncryptがインストールされているPythonsite-packagesディレクトリにsitecustomize.pyというファイルを作成します。

ファイルの中身は以下の通りです。

import sys
sys.setdefaultencoding('utf-8')

Python2系の環境だとデフォルトのエンコーディングが「ascii」になってる?っぽくて、それを「utf-8」に変更しています。

最後に

もし、Let's Encryptを利用していて同じエラーが出ている人がいれば一度試してみてください。