Let’s Encryptで古い各種証明書を自動で削除する

Let’s Encryptの以前に発行された証明書を削除

Let’s Encryptの証明書の有効期限が90日なので、1月に1回Cronで更新作業をおこなっています、そうすると新しいファイルは/etc/letsencrypt/archive/(ドメイン名)/*.pemとして保存されます。
ファイル名は、「cert1.pem」、「chain1.pem」、「fullchain1.pem」、「 privkey1.pem」の用に**.pemと保存され、新しいファイル名は「cert2.pem」、「chain2.pem」、「fullchain2.pem」、「 privkey2.pem」となり以前の数字に1つ足したファイル名になります。

この以前に発行された古い証明書ですが、自動削除されないのでfindをrmコマンドを利用して120日以前のファイルは削除するようにCronに登録して削除することにしました

Findとrmコマンドを利用して古いLet’s Encryptの証明書を削除

2年近く使用しているサーバですが、下記のように無料のSSL証明書のLet’s Encryptの以前に発行した古いが溜まっていきます。自動発行はできますが、以前のファイルを削除する機能がないので、Findとrmコマンドで削除するようにCronで登録していきます

$ sudo ls -lt /etc/letsencrypt/archive/example.com/ | tail
-rw-r--r-- 1 root root 3440 10月  1  2016 fullchain3.pem
-rw-r--r-- 1 root root 1704 10月  1  2016 privkey3.pem
-rw-r--r-- 1 root root 1793  9月  1  2016 cert2.pem
-rw-r--r-- 1 root root 1647  9月  1  2016 chain2.pem
-rw-r--r-- 1 root root 3440  9月  1  2016 fullchain2.pem
-rw-r--r-- 1 root root 1708  9月  1  2016 privkey2.pem
-rw-r--r-- 1 root root 1793  8月 22  2016 cert1.pem
-rw-r--r-- 1 root root 1647  8月 22  2016 chain1.pem
-rw-r--r-- 1 root root 3440  8月 22  2016 fullchain1.pem
-rw-r--r-- 1 root root 1704  8月 22  2016 privkey1.pem

findコマンドで120日より古いファイルを検索し、該当したファイルをrmコマンドで削除していきます
# 古いファイルを削除する前に、念のために「/etc/letsencrypt/archive/」フォルダを
# 圧縮してバックアップをとっておきます
$ sudo tar czvf /var/tmp/archive.tat.gz /etc/letsencrypt/archive/

# 120日より以前のファイルを検索して、古いファイルを削除します
$ sudo find /etc/letsencrypt/archive/*/ -mtime +120 -name "*.pem" | xargs rm -f

削除されているか確認します
$ sudo ls -lt /etc/letsencrypt/archive/example.com/ | tail
-rw-r--r-- 1 root root 3798  7月  1 06:00 fullchain28.pem
-rw-r--r-- 1 root root 1704  7月  1 06:00 privkey28.pem
-rw-r--r-- 1 root root 3798  6月  1 06:01 fullchain27.pem
-rw-r--r-- 1 root root 2151  6月  1 06:01 cert27.pem
-rw-r--r-- 1 root root 1647  6月  1 06:01 chain27.pem
-rw-r--r-- 1 root root 1704  6月  1 06:01 privkey27.pem
-rw-r--r-- 1 root root 2155  5月  1 06:00 cert26.pem
-rw-r--r-- 1 root root 1647  5月  1 06:00 chain26.pem
-rw-r--r-- 1 root root 3802  5月  1 06:00 fullchain26.pem
-rw-r--r-- 1 root root 1704  5月  1 06:00 privkey26.pem

削除されているか確認したら、証明書の再発行ができるか確認します
# CentOS 7.X
# /usr/local/certbot/certbot-auto renew --force-renew && /bin/systemctl reload httpd

# CentOS 6.X
# /usr/local/certbot/certbot-auto renew --force-renew && /etc/init.d/httpd reload

証明書が再発行できる事を確認できてApacheも再起動できたら、Cronに登録します。
# crontab -e
0  7  1 * * find /etc/letsencrypt/archive/*/ -mtime +120 -name "*.pem" | xargs rm -f

 

スポンサーリンク