Es kann von Zeit zu Zeit sinnvoll sein, die heruntergeladenen CRLs (Certificate Revocation List) zu bereinigen. Das certs-Paket ab Version 1.5.1 ist von Jürgen Edner weiter optimiert worden und lädt nun deutlich weniger CRLs als früher herunter. Andererseits können sich auch durch eigene „Spielereien“ mit Zertifikaten CRLs anhäufen.

Diese Anleitung gilt für das certs-Paket ab Version 1.5.1.

Im Folgenden sind die nacheinander auszuführenden Schritte dargestellt:

Stoppen des at-Daemons

# /usr/sbin/service stop atd.service

Löschen der CRL-AT-Jobs

# /var/install/bin/certs-update-crl --deletejobs

Löschen der CRLs und der CRL-Liste

# cd /var/certs/ssl/crl
# rm *
# cd ..
# cp certs-update-crl-list.std certs-update-crl-list

Neuerstellung des CRL für die eigene CA

Wer im certs-Paket eine eigene CA angelegt hat, muss nun das lokale CRL neu erzeugen. Ob eine eigene CA existiert, erkennt man am Vorhandensein der Datei /var/certs/ssl/certs/ca.pem.

# /var/install/bin/certs-create-tls-certs crl
Certificate generation
Parameters
  = - change/set certificate type: ca
  = - change/set certificate name: ca
 
Certificate Authority (CA) (sha384) (2048bits)
  3 - [✓] create a CA key
  4 - [✓] create a self-signed CA certificate (valid until: xx.xx.xxxx)
  5 - [✓] create .pem CA certificate and copy it to /usr/local/ssl/certs
  6 - show CA key and certificate file location
  7 - revoke a certificate
  8 - update revocation list
Please select (3-8), change (b)its/(h)ash, (e)mail certs, (q)uit? 

Sind die Punkte 3-5 abgehakt, ist das lokale CA korrekt erstellt und nun muss 8 aufgerufen werden:

Please select (3-8), change (b)its/(h)ash, (e)mail certs, (q)uit? 8
Update revocation list now (y/n) [n]? y
You have to enter the following data:

 1. Select CRL due days.
 2. Passphrase of your CA key.

Press ENTER to continue

 1 - use default CRL validity: 30 days
 2 - set individual CRL validity

Please choose desired option (1-2) [1]?

Wenn eine eigene Gültigkeitsdauer gewünscht ist, ist nun 2 und die Gültigkeitsdauer sonst 1 anzugeben:

Please choose desired option (1-2) [1]? 2
Please enter number of validity days or hours (e.g. 8h) [30]? 60

Nun ist abschließend das Passwort für das lokale CA einzutippen:

Using configuration from /usr/local/ssl/openssl.cnf
Enter pass phrase for /usr/local/ssl/private/ca.key: meinpasswort
updating hashes '/usr/local/ssl/crl' ...

Nun beenden wir den Assistenten mit q:

Please select (3-8), change (b)its/(h)ash, (e)mail certs, (q)uit? q

Download der CRLs und Anlegen der AT-Jobs

# /var/install/bin/certs-update-crl --all

Starten des at-Daemons

# /usr/sbin/service start atd.service

Zusammenfassung aller Schritte

# /usr/sbin/service stop atd.service
# /var/install/bin/certs-update-crl --deletejobs
# cd /var/certs/ssl/crl
# rm *
# cd ..
# cp certs-update-crl-list.std certs-update-crl-list
# /var/install/bin/certs-create-tls-certs crl
# /var/install/bin/certs-update-crl --all
# /usr/sbin/service start atd.service

Skriptvorschlag zur automatischen CRL-Bereinigung

Das folgende Skript fasst die notwendigen Schritte zur CRL-Bereinigung zusammen, wobei der Schritt Neuerstellung des CRL für die eigene CA ausgelassen wurde, da das Skript versucht, das CRL der eigenen CA zu erhalten, was allerdings nur gelingt, wenn dieses nach dem Schema <full_qualified_hostname>-crl.pem und <full_qualified_hostname>-der.pem benannt ist.

#!/bin/sh

# CRL_cleanup

atdrunning=no
(/usr/sbin/service status atd.service | grep "(running) since") && atdrunning=yes

if [ "${atdrunning}" = "yes" ]
then
    /usr/sbin/service stop atd.service
fi

hostname=$(hostname -f)

echo | /var/install/bin/certs-update-crl --deletejobs
echo

cd /var/certs/ssl/crl

crls=$(ls)
for f in ${crls}
do
    if echo ${f} | grep -vq "^${hostname}"
    then
        rm ${f}
    fi
done

cd ..

cp certs-update-crl-list.std certs-update-crl-list

echo | /var/install/bin/certs-update-crl --all
echo

if [ "${atdrunning}" = "yes" ]
then
    /usr/sbin/service start atd.service
fi