docker-letsencrypt-nginx-proxy-companion コンテナで Let's Encrypt の証明書を revoke したい
nginx-proxy と docker-letsencrypt-nginx-proxy-companion を使うことで、1VPS でお手軽にマルチドメイン環境を構築できます。
一方で、docker-letsencrypt-nginx-proxy-companion はコンテナ内で certbot を使っていないため、簡単に revoke する方法がなくて困りました。
おそらくそれっぽい手順を試して、記録しておきます。
simp_le
docker-letsencrypt-nginx-proxy-companion では certbot の代わりに simp_le という軽量な Let's Encrpyt クライアントを使っています。
これがなにが困るかというと、
- simp_le で revoke するには --revoke オプションをつければいいのはわかるが、その他のオプションが不透明
- 公式ドキュメントには見当たらない
- certbot の delete サブコマンドのようなものはなく、どの cert ファイルを消せばいいかわからない
そこで一旦、docker-letsencrypt-nginx-proxy-companion が simp_le を使っている部分を読んでみます。
この中で、オプション指定がわかるコードラインは
これに加えて simp_le の README のサンプル を参考に、それっぽいコマンドを組み立てて実行してみます。
bash-5.0# cd /etc/nginx/certs/example1.walkingmask.tk bash-5.0# simp_le --revoke \ > -f account_key.json -f account_reg.json \ > -f key.pem -f chain.pem -f fullchain.pem -f cert.pem \ > --email walkingmask@gmail.com \ > --cert_key_size=2592000 \ > --server=https://acme-v02.api.letsencrypt.org/directory \ > -d example1.walkingmask.tk \ > --default_root /usr/share/nginx/html/ bash-5.0#
何も出力されませんでした。revoke されたのでしょうか。同じコマンドを実行して確認します。
bash-5.0# simp_le --revoke -f account_key.json -f account_reg.json -f key.pem -f chain.pem -f fullchain.pem -f cert.pem --email walkingmask@gmail.com --cert_key_size=2592000 --server=https://acme-v02.api.letsencrypt.org/directory -d example1.walkingmask.tk --default_root /usr/share/nginx/html/ ACME server returned an error: urn:ietf:params:acme:error:alreadyRevoked :: The request specified a certificate to be revoked that has already been revoked :: Certificate already revoked Debugging tips: -v improves output verbosity. Help is available under --help.
revoke できたようです。
次は、ファイルを削除します。letsencrypt_service を見るに、cert 類は /etc/nginx/certs にしか存在しないようなので、revoke したドメインの certs をここから取り除きます。
bash-5.0# mv example1.walkingmask.tk ~/revoked_certs/ bash-5.0# rm -f example1.walkingmask.tk.chain.pem bash-5.0# rm -f example1.walkingmask.tk.crt bash-5.0# rm -f example1.walkingmask.tk.dhparam.pem bash-5.0# rm -f example1.walkingmask.tk.key
心配性なので、本体は適当に避難させて、simlinks は削除してしまいます。
あとは、nginx-proxy コンテナを再起動したり DNS からもドメインを削除して、当該のコンテナを削除して終わりなはずです。