Let’s Encryptで証明書の失効処理と削除のやりかた。Revoking certificatesの公式ドキュメントを参考にやりました。

失効処理


パッケージ管理システム以外でcertbot-autoをインストールしていたためcertbot-autoの場所を調べます。

1
2
find -name certbot-auto
/usr/bin/certbot-auto

revokeコマンドでドメイン配下のcertX.pemの失効処理を行います。

1
./certbot-auto revoke --cert-path /etc/letsencrypt/archive/your.domain.com/cert1.pem

certX.pemはLet’s Encryptで証明書を更新した数だけあるようでした。おそらく、最新の(最も番号の新しい)もののみ失効させればよいような気もするのですが、確証が持てなかったため全てのcertX.pemに対してrevokeを行いました。
バージョンによると思うのですがcert1.pemを失効されるだけですべて失効していました。古いバージョンのものだとそうではないようです。ただ、バージョンを表示するコマンドが見当たらなかったので具体的にどのバージョンからcert1.pemだけでよいのかが解りません。

また、ネットではfullchain1.pemに対してrevokeコマンドを実行しなさいというアドバイスが何点か見つかりましたが(主に海外の掲示板で)cert.pemに対してrevokeを実行するとfullcain.pemの方も同時に失効してました。

失効確認


ブラウザやSSL Labあたりで証明書が失効したことを確認します。また、すでにrevokeコマンドを実行した証明書に対して再度revokeを実行すると下記のように「既に失効している」旨のメッセージが表示されます。

1
2
3
An unexpected error occurred:
The request message was malformed :: Certificate already revoked
Please see the logfiles in /var/log/letsencrypt for more details.

またcertificatesコマンドで現在の証明書一覧を確認できます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Saving debug log to /var/log/letsencrypt/letsencrypt.log

-------------------------------------------------------------------------------
Found the following certs:
Certificate Name: aaa.example.com
Domains: aaa.example.com
Expiry Date: 2018-01-20 09:37:03+00:00 (VALID: 58 days)
Certificate Path: /etc/letsencrypt/live/xxx.example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/xxx.example.com/privkey.pem
Certificate Name: example.com
Domains: example.com
Expiry Date: 2018-01-20 09:37:11+00:00 (VALID: 58 days)
Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem
Certificate Name: ccc.example.com
Domains: ccc.example.com
Expiry Date: 2018-01-20 09:37:19+00:00 (VALID: 58 days)
Certificate Path: /etc/letsencrypt/live/ccc.example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/ccc.example.com/privkey.pem
-------------------------------------------------------------------------------

ドメインレジストラでAレコード消す


失効を確認したら、ドメインレジストラ(お名前.comとかAWS Route53とか)でAレコード削除します。

証明書の削除


追記 2017/11/22

こちらもバージョンによっては不要のようです。比較的新しいと思われるバージョンのLet’s Encryptだとrevokeコマンド実行後にドメインのディレクトリごと消えていました。

以下はrevoke後にドメインのディレクトリが消えていない場合の参考にしてください。

最後に不要になった証明書を削除します。deleteコマンドで削除します。

1
2
3
4
5
6
7
8
9
10
11
12
./certbot-auto delete -d your.domain.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log

Which certificate would you like to delete?
-------------------------------------------------------------------------------
1: your.domain.com
-------------------------------------------------------------------------------
Press 1 [enter] to confirm the selection (press 'c' to cancel): 1

-------------------------------------------------------------------------------
Deleted all files relating to certificate your.domain.com
-------------------------------------------------------------------------------

これで/etc/letsencrypt/配下にある指定したドメインに関する証明書が一括で消えます。ちなみに、古いバージョンだとdeleteコマンドがないです。その場合はバージョンアップするか、手で削除します。