walkingmask’s development log

IT系の情報などを適当に書いていきます

MENU

docker-letsencrypt-nginx-proxy-companion コンテナで Let's Encrypt の証明書を revoke したい

nginx-proxydocker-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 を使っている部分を読んでみます。

https://github.com/nginx-proxy/docker-letsencrypt-nginx-proxy-companion/blob/master/app/letsencrypt_service

この中で、オプション指定がわかるコードラインは

https://github.com/nginx-proxy/docker-letsencrypt-nginx-proxy-companion/blob/master/app/letsencrypt_service#L271-L277

これに加えて 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 からもドメインを削除して、当該のコンテナを削除して終わりなはずです。