Let’s encrypt の証明書を失効させ、ドメインの設定を削除する
- 2017年05月26日
- Linux, SSL
- certbot, Let's encrypt, SSL
無料の SSL 証明書 Let’s encrypt を certbot で運用している場合の方法です。証明書のインストールや更新の記事はよくあるのですが、削除の記事があまりないので書いてみました。
1つのサーバーで複数のホストの SSL 証明書をインストール・運用しているケースで、あるサイトの閉鎖に伴い、1つの証明書だけ管理対象から外したいというケースがあったためです。
certbot コマンドを最新にする
今回のサーバーは git を使ってインストールしているので、まず git pull コマンドで certbot コマンドを最新版に更新します。
1 2 3 4 5 6 7 8 |
# git pull remote: Counting objects: 4566, done. remote: Compressing objects: 100% (35/35), done. Resolving deltas: 100% (3392/3392), completed with 281 local objects. From https://github.com/certbot/certbot ...... |
証明書の失効作業
この作業は探すといろいろ出てきますが、certbot revoke
で実行できます。このとき--cert-path
で証明書のパスを指定します。
1 2 3 4 5 6 7 8 9 10 11 |
# ./certbot-auto revoke --cert-path=/etc/letsencrypt/archive/example.com/cert1.pem Saving debug log to /var/log/letsencrypt/letsencrypt.log ------------------------------------------------------------------------------- Congratulations! You have successfully revoked the certificate that was located at /etc/letsencrypt/archive/example.com/cert1.pem ------------------------------------------------------------------------------- |
同様に fullchain1.pem なども失効させる必要があります。
また秘密鍵を失効させる場合は --key-path
で指定します。
証明書の削除
これまで証明書の削除は、手作業で /etc/letsencrypt/live/{FQDN} のファイルを消す必要がありました。
1 2 3 4 5 |
rm -rf /etc/certbot/archive/{FQDN}/ rm -rf /etc/certbot/live/{FQDN}/ rm -rf /etc/certbot/renewal/{FQDN}.conf |
これは面倒です。しかし、最新の certbot-auto コマンドには delete オプションが追加され、まとめてファイルを消せるようになりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# ./certbot-auto delete -d example.com Saving debug log to /var/log/letsencrypt/letsencrypt.log Which certificate would you like to delete? ------------------------------------------------------------------------------- 1: example.com 2: test.example.net 3: www.example.net ------------------------------------------------------------------------------- Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 1 ------------------------------------------------------------------------------- Deleted all files relating to certificate example.com. ------------------------------------------------------------------------------- |
これで証明書や秘密鍵はバッサリ消えますが、Apache や Nginx に追加された https の設定までは消えませんので、そちらは手作業で消す必要があります。(消さないと Apache のリロードや再起動時にエラーになってしまいますのでご注意を)
ITエンジニア募集中!
キュアコード株式会社はITエンジニアを募集しております。少人数の職場なので、上流・下流やサーバー・クライアント対応の垣根なく、あなたの強みを活かしながら いろいろなことにチャレンジ可能です。エンジニアとしての未経験の方、経験が少ない方も歓迎しています。
下記よりITエンジニア募集の採用情報をご覧いただけます。
certbot-autoのアップデートについてですが、
”Certbot クライアントは、起動時に自動的にアップデートされる仕組みになっているので、特に意識しなくても常に最新のバージョンを使用できます。”
引用元:Certbot クライアントのインストール – Let’s Encrypt 総合ポータル
certbot-autoコマンドを実行するタイミングで、まずアップデートがないかどうかの確認があるらしいです。
コメントありがとうございます♬
仰るとおり現在のバージョンはそうですね。
あと CentOS 7 だと EPEL のリポジトリからインストールできるようになったのでより手軽に使えるようになっていますね。
「これで証明書や秘密鍵はバッサリ消えますが、Apache や Nginx に追加された https の設定までは消えませんので、そちらは手作業で消す必要があります。(消さないと Apache のリロードや再起動時にエラーになってしまいますのでご注意を)」とありますが、単純にssl.confを削除すればいいということでしょうか?
以前、証明書を削除した際、apacheがエラーで起動しなくなり、パニックになった恐怖がトラウマになっています。
コメントありがとうございます。返信が遅くなりました。
Apache の場合、certbot-apache2 のプラグインで自動設定したのであれば、***-le-ssl.conf という名前のファイルが生成されるので、そのファイルを消せば良いと思います。
ssl.conf に書くかどうかは管理者の運用ポリシー次第ですのでなんとも言えませんが、基本的にこのファイルをまるごと消すことはまずないと思います。
もしあるとすればこのファイルの <VirtualHost>~</VirtualHost> ディレクティブ内に消したいドメインの証明書が設定されていれば、そのディレクティブを消すという対応でしょうか。
いずれにせよ、いきなり消すよりはコメントにして、再起動前にまず
service httpd configtest
(CentOS の場合) などのコマンドで文法チェックをするのが良いと思います。