2020年6月18日木曜日

Let's Encryptの証明書更新でトラブル

Let's Encryptのウェブ証明書って無料であることはもちろん、
certbot-autoコマンドで簡単に更新できるのも利点なのですが、
こういうコマンドって諸刃の剣で、ちゃんと動かなくなると悲惨です。
certbot-autoも時々エラーを吐いて動いてくれないことがあり、
いつも実行時はドキドキなのですが、この度のはひどかった。

Python 2.7を使っているサーバでcetbot-autoを実行すると最後に以下のようなエラーが。
Certbot has problem setting up the virtual environment.

We were not be able to guess the right solution from your pip 
output.

Consult https://certbot.eff.org/docs/install.html#problems-with-python-virtual-environment
for possible solutions.
You may also find some support resources at https://certbot.eff.org/support/ .
実はPython 2.xは今年始めにサポートが打ち切られており、
もしかしてそのせいかもと思いPython 3.xを試してみることに。
"/usr/bin"ディレクトリを見ると2.7と3.4mが入っていたので
3.4mに切り替えてみようとして
# update-alternatives --config python
update-alternatives: error: no alternatives for python
とか言われてしまいました。
仕方がないので
# update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
# update-alternatives --install /usr/bin/python python /usr/bin/python3.4m 2
を実行後にもう一度試して無事切り替えることに成功。
しかしcetbot-autoの実行結果は
Creating virtual environment...
Traceback (most recent call last):
  File "/usr/bin/virtualenv", line 2, in 
    import virtualenv
ImportError: No module named 'virtualenv'
Traceback (most recent call last):
  File "", line 27, in 
  File "", line 19, in create_venv
  File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['virtualenv', '--no-site-packages', '--python', '/usr/bin/python2.7', '/opt/eff.org/certbot/venv']' returned non-zero exit status 1
で、なんか詰んだ感じ。

ただ証明書の期限が迫っており諦めるわけにも行かず
ネットで調べていてぶち当たったのがcertbotにあるバグの情報
ということでPythonを2.7に戻して以下を実行。
# cd /usr/local/src/
# mkdir certbot2
# cd certbot2/
# wget https://raw.githubusercontent.com/certbot/certbot/75499277be6699fd5a9b884837546391950a3ec9/certbot-auto
# chmod +x certbot-auto
# ./certbot-auto --no-self-upgrade
無事更新できました。
やれやれだぜ。

0 件のコメント:

コメントを投稿