以前導入した Let's Encrypt の証明書の有効期限が切れてしまい、ついでに色々問題が発生したので、対処した方法のメモを記録しておくことにしました。
今回発生した現象はこちら。(抜粋です。)
Traceback (most recent call last):
File "/opt/eff.org/certbot/venv/bin/letsencrypt", line 11, in <module>
sys.exit(main())
File "/opt/eff.org/certbot/venv/local/lib/python2.7/site-packages/certbot/main.py", line 755, in main
return config.func(config, plugins)
File "/opt/eff.org/certbot/venv/local/lib/python2.7/site-packages/certbot/main.py", line 694, in certonly
lineage = _get_and_save_cert(le_client, config, domains, certname, lineage)
File "/opt/eff.org/certbot/venv/local/lib/python2.7/site-packages/certbot/main.py", line 82, in _get_and_save_cert
lineage = le_client.obtain_and_enroll_certificate(domains, certname)
File "/opt/eff.org/certbot/venv/local/lib/python2.7/site-packages/certbot/client.py", line 375, in obtain_and_enroll_certificate
self.config)
File "/opt/eff.org/certbot/venv/local/lib/python2.7/site-packages/certbot/storage.py", line 999, in new_lineage
"archive directory exists for " + lineagename)
CertStorageError: archive directory exists for XXX
参考にしたサイトによると、以前から同様の問題はあったようですが、ディレクトリが変わっていました。
/root/.local/share/letsencrypt/
→/opt/eff.org/certbot/
なので、再セットアップのために削除するディレクトリは
/opt/eff.org/certbot/
になります。
具体的にはこんな感じ。
unset PYTHON_INSTALL_LAYOUT
env | grep PYTHON_INSTALL_LAYOUT
sudo rm -rfd /opt/eff.org/certbot/
unset は実はいらないんじゃないかなぁと思いながらも、実施したので記載しています。どなたか同じ現象が発生した際、unset なしの検証もしていただけるとうれしいです。
今回は、復旧作業と称して、色々試したので
Renewal conf file /etc/letsencrypt/renewal/xxx is broken.
なんてメッセージも出てしまいました。。。
ので(?)設定を全消去して、新規に証明書を取り直すことにしました。
設定の全消去は/etc/letencript
以下を全消去(チキンなのでリネームw)すれば OK です。
ここまで作業をすすめ、AmazonLinux 用のおまじない--debug
をつけたインストール作業を行うと、復旧(というか新規の再取得)完了です。
./certbot-auto certonly --webroot -w /var/www/html/hogehoge(80でアクセスできるDocumentRoot) -d www.example.com(登録したいFQDN) --debug
/etc/letencript
の消去で、/etc/letsencrypt/live/
以下のディレクトリ構造が変わってしまっていると、nginx の起動で怒られるので、nginx の設定ファイルを適切に変更することも必要かもしれません。
はやく AmazonLinux に公式に対応してくれないかなぁ。。。