Startseite » Forum » LiveConfig-Foren (deutsch) » Let's Encrypt » LE: verlängertes Zertifikat wird nicht ins Dateisystem kopiert
Ergebnis 1 bis 8 von 8
  1. #1
    Erfahrener Benutzer
    Registriert seit
    23.09.2013
    Beiträge
    102

    LE: verlängertes Zertifikat wird nicht ins Dateisystem kopiert

    Ich habe hier liveconfig 2.4.0-r4602 Standard auf Debian Jessie.

    Es betrifft 2 Zertifikate eines Kunden.

    Im Webinterface in der Zertifikatsverwaltung das Ablaufdatum 5.9.2017 stehen - also völlig korrekt. Das Zertifikat im Dateisystem läuft aber bereits am 6.7.2017 ab. Das LE-Zertifikat wurde laut liveconfig.log gestern am 7.6 erfolgreich verlängert.

    Code:
    [2017/06/07 07:54:42.262042] [3397|16038] ACME: created new authorization request for 'meinedomain.de'
    [2017/06/07 07:54:42.660933] [3397|16038] ACME: created new authorization request for 'meinedomain.de'
    [2017/06/07 07:54:42.671195] [3397|16038] ACME: sceduling renewal of SSL certificate for 'meinedomain.de'
    [2017/06/07 07:56:45.972527] [3397|16908] ACME: accepted certificate request for 'meinedomain.de' (certificate URL: https://acme-v01.api.letsencrypt.org/acme/cert/039f0ddskfhsdfhsdkfjhsdkfjh5329f51afca)
    ---

    Interessant ist, dass auch das Modifikationsdatum der Zertifikatsdatei vom gleichen Tag ist(Ich habe vorher noch zusätzliche SSL-Zertifikate erzeugt, so dass LC die alten Zertifkate mit dem alten Inhalt wohl neu geschrieben hat).

    ---

    Als Versuch habe ich die veralteten Zertifikatsdateien gelöscht und LiveConfig veranlasst - durch erzeugen eines neuen Zertifikates - die Zertifikate neu zu schreiben. Damit wurden jetzt die neuen Zertifikate mit dem korrektem Ablaufdatum in die Zertifikatsdatei geschrieben.

    ---

    Zur Überprüfung meiner SSL-Zertifikate nehme ich eine angepasste Version hiervon:

    https://github.com/HeinleinSupport/c...slcertificates
    Geändert von fx998 (27.06.2017 um 09:11 Uhr)

  2. #2
    Erfahrener Benutzer
    Registriert seit
    23.09.2013
    Beiträge
    102
    Das Problem ist gerade erneut aufgetreten auf einem anderen Server (Ubuntu 14.04 LTS, Liveconfig 2.4.1-r4635; Problem per Supportticket angefragt).

    Update

    Das Problem beim aktuellen Auftreten hat sich geklärt. Das Letsencrypt-Zertifikat war korrekt eingespielt. Nur das alte Zertifikat war noch nicht gelöscht und wurde deswegen vom eigenen Monitoringsystem mit Warnung wegen Ablauf quittiert.
    Geändert von fx998 (14.08.2017 um 15:23 Uhr)

  3. #3
    Erfahrener Benutzer
    Registriert seit
    23.09.2013
    Beiträge
    102
    Ist das Absicht, das abgelaufene Letsencrypt-Zertifikate nicht gelöscht werden?

    Ich meine - ganz unabhängig davon, dass das bei mir unangenehm ist, weil mein Monitoring ohne Grund meckert: Warum möchte man ein abgelaufenes LE-Zertifikat aufheben wollen, wenn die Verlängerung erfolgreich war?

  4. #4
    Erfahrener Benutzer
    Registriert seit
    07.04.2011
    Beiträge
    704
    Warum sollten "alte" Zertifikate gelöscht werden?

    Der Renew erfolgt ja mit dem bestehenden Private Key - nur das Zertifikat selbst wird getauscht.

    Es gibt also bei einem Renew o.ä. keinen zusätzlichen Eintrag bei den "SSL-Zertifikaten".

  5. #5
    Erfahrener Benutzer
    Registriert seit
    23.09.2013
    Beiträge
    102
    Mit "altes Zertifikat" meine ich die crt - Datei.

    Hier liegen z. B. schon 3 davon mit dem gleichen CN rum, 2 abgelaufene:

    Code:
    /etc/ssl/certs/31e01e675a1f17ca.crt 1503855420 meinedomain.de
    /etc/ssl/certs/80b15bd20bd7324b.crt 1509059340 meinedomain.de
    /etc/ssl/certs/f84d325ead282b9f.crt 1503855900 meinedomain.de

  6. #6
    Erfahrener Benutzer
    Registriert seit
    02.04.2012
    Beiträge
    634
    Zitat Zitat von fx998 Beitrag anzeigen
    Hier liegen z. B. schon 3 davon mit dem gleichen CN rum, 2 abgelaufene:
    und dein Monitoring scannt herumliegende Dateien? Komischer Ansatz...

  7. #7
    Erfahrener Benutzer
    Registriert seit
    23.09.2013
    Beiträge
    102
    Zertifikate liegen in /etc/ssl/certs. Das ist einfach implementiert, braucht wenig resourcen und geht sehr schnell.

    Wenn Du einen einfacheren Ansatz hast, wie ich alle Zertifikate mit allen SNI-Hostnamen für alle möglichen Anwendungen (mailserver, webserver, was-weiss-ich-server,...) auf einem Server(unabhängig ob jetzt liveconfig drauf ist oder nicht) prüfen kann: Immer her damit.

    Nachtrag

    Für die höheren SLA wird das Zertifikat natürlich online geprüft.
    Geändert von fx998 (18.08.2017 um 13:41 Uhr)

  8. #8
    Erfahrener Benutzer
    Registriert seit
    23.09.2013
    Beiträge
    102
    Ich habe mir jetzt mit einem Script als workaround beholfen, dass prüft, ob eine angemeckerte Datei ein LE-Zert ist, ob es auch tatsächlich abläuft und ob es wirklich nicht mehr in Verwendung ist(in /etc) und anschliessend löscht.

    Code:
    #!/bin/bash
    
    export    SELF="$(basename $0)"
    export    CERT="$1"
    export OPENSSL=/usr/bin/openssl
    
    my_flock() {
    
            exec 200>/tmp/lock.$SELF
            flock --wait 10 200
    }
    
    my_log() {
            local MSG="$*"
            /usr/bin/logger -t "$SELF" -p local7.info "$MSG"
    }
    
    check_and_remove_cert() {
    
            local CERT="$1"
            local cert_expiration_date
    
            [ -n "$CERT" ] || { my_log "Usage: $(basename $0) <certfile-to-purge>"                  ; exit 1 ; }
            [ -f "$CERT" ] || { my_log "No file >>$CERT<< found, exiting"                           ; exit 2 ; }
            my_flock       || { my_log "Another Instance of this program already running, exiting"  ; exit 3 ; }
    
            # 1. check if the certificate is a letsencrypt certificate
            if $OPENSSL x509 -in "$CERT" -text 2>/dev/null| grep -qiE "CA .*letsencrypt" ; then
    
                    # check if the certificate is near expiration
                    cert_expiration_date="$(openssl x509  -in "$CERT" -dates -noout 2>/dev/null | grep notAfter | cut -d= -f2)"
                    cert_expiration_date=$"$(date --date="$cert_expiration_date" +"%s")"
                    if [ "$cert_expiration_date" -lt "$(date --date="now + 14 days" +"%s")" ] ;then
    
                            # search for cert in all small files in /etc if still in use(expensive command)
                            if ! find 2>/dev/null /etc -mtime -180 -type f -size -100k -exec fgrep -lR "$CERT" "{}" +  | fgrep -q "$CERT" ; then 
                                    # cert not found -> delete
                                    my_log "removing unused, expiring letsencrypt-certificate $CERT"
                                    rm -f "$CERT"
                            fi
                    fi
            fi
    }
    
    trap "" 1 15
    
    check_and_remove_cert "$CERT" >/tmp/$SELF.log 2>&1 &

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •