Let's Encrypt: Zertifikate lassen sich nicht erneuern

mobafan

New Member
Hallo,

ich experimentiere derzeit mit Let's Encrypt. Aufgrund der kurzen Laufzeit muss hier natürlich das automatische Update laufen, weswegen ich das natürlich auch (manuell) austesten möchte. Doch irgendwie tut es nicht.

Von vorne: Da ich auch DANE einsetze, habe ich meinen Private Key selbst generiert (da dieser für ein bis zwei Jahre verwendet werden soll) und dem certbot entsprechend diesen Key übergeben:

Code:
certbot certonly --webroot -w /pfad/zum/webspace --csr ./testdomain.csr
Das hat auch perfekt geklappt, das geladene Zertifikat (einschl. Fullchain) in den Apache eingebunden, TLSA ins DNS eingebaut - alles funktioniert.

Jetzt möchte ich gern die Erneuerung testen. Laut Anleitung geht eine zwangsweise Erneuerung mit dem Parameter --force-renew. Also wird folgender Befehl ausgeführt:

Code:
certbot renew --force-renewal --post-hook "/etc/init.d/apache2 reload"
Doch als Ergebnis kommt nur:
No renewals were attempted.
Wo liegt mein Fehler? Oder ist es doch nur ein Gedankenfehler bzw. verstehe ich die Doku falsch und es wird auch mit force-renew nicht schon nach wenigen Minuten/Stunden/Tagen erneuert, d. h. ich müsste tatsächlich abwarten?
 
Last edited by a moderator:

Joe User

Blog Benutzer
Die Doku besagt auch, dass bei Verwendung von --csr anschliessend kein renew sondern erneut certonly verwendet werden muss.

Hatte das Problem beim Experimentieren ebenfalls und bastel deshalb gerade an einem Wrapper der auch gleich eine eigene Ablagestruktur verwendet und Apache, Postfix und Dovecot passend (re)konfiguriert.
 

mobafan

New Member
Die Doku besagt auch, dass bei Verwendung von --csr anschliessend kein renew sondern erneut certonly verwendet werden muss.
Hmpf. Unbefriedigend, da die Zertifikate dadurch mit neuen Dateinamen ausgestattet werden und keine automatische Überprüfung stattfindet, ob ein Austausch notwendig ist.

Habe jetzt acme-tiny genommen und einen monatlichen Cron-Job erstellt. Gibt es halt jeden Monat neue Zertifikate statt nach 2 oder 2,5 Monaten.
 

Joe User

Blog Benutzer
Hmpf. Unbefriedigend, da die Zertifikate dadurch mit neuen Dateinamen ausgestattet werden
Das lässt sich verhindern (Beispiel aus meinem Wrapper):
Code:
/usr/local/bin/certbot certonly \
    --text --quiet --agree-tos \
    --config-dir ${DIRSSL}/letsencrypt \
    --csr ${DIRSSL}/${DOMAIN}/${SUBDOMAIN}/request.00.rsa.csr \
    --key-path ${DIRSSL}/${DOMAIN}/_privkey.00.rsa.key.enc \
    --cert-path ${DIRSSL}/${DOMAIN}/${SUBDOMAIN}/cert.00.rsa.crt \
    --chain-path ${DIRSSL}/${DOMAIN}/${SUBDOMAIN}/chain.00.rsa.crt \
    --fullchain-path ${DIRSSL}/${DOMAIN}/${SUBDOMAIN}/fullchain.00.rsa.crt \
    --webroot --webroot-path ${DIRWWW}/letsencrypt \
    --domain ${SUBDOMAIN}.${DOMAIN} \
    --email ${EMAIL}
und keine automatische Überprüfung stattfindet, ob ein Austausch notwendig ist.
Auch das lässt sich lösen (quick&dirty, ungetestet):
Code:
if [ "$(date -j -u -f \"%b %d %T %Y %Z\" \"`/usr/bin/openssl x509 \
    -inform pem -enddate -noout \
    -in ${DIRSSL}/${DOMAIN}/${SUBDOMAIN}/cert.00.rsa.crt | \
    cut -d= -f2-`\" \"+%s\")" -gt "$(date -j -u -v-7d \"+%s\")" ]
then
  mv -f ${DIRSSL}/${DOMAIN}/${SUBDOMAIN} \
      ${DIRSSL}/archives/${DOMAIN}/
  certonly ... # Optionen von oben
else
  echo "Nothing to do"
fi
HTH
 

Joe User

Blog Benutzer
Getestete Version:
Code:
DATE_CERT="`/usr/bin/openssl x509 -inform pem -enddate -noout \
    -in ${DIRSSL}/${DOMAIN}/${SUBDOMAIN}/cert.00.rsa.crt | cut -d= -f2-`"
DATE_CERT_S="`date -j -u -f "%b %d %T %Y %Z" "${DATE_CERT}" "+%s"`"
DATE_S_P7D="`date -j -u -v+7d "+%s"`"
if [ "${DATE_CERT_S}" -gt "${DATE_S_P7D}" ]
then
  mv -f ${DIRSSL}/${DOMAIN}/${SUBDOMAIN} \
      ${DIRSSL}/archives/${DOMAIN}/
  certonly ... # Optionen von obenelse
else
  echo "Nothing to do"
fi
 
Last edited by a moderator:

Joe User

Blog Benutzer
Das ist längst geplant, aber erst muss ich das Script noch vervollständigen, DAU-Bremsen einbauen und dann aufräumen ;)
Wenn ich dann noch Lust habe, wäre zumindest ein wenig Doku auch nicht schlecht.

Kurz: Release kommt, irgendwann.
 
Top