Problem mit Lets encrypt

  • Das war wohl tatsächlich der Fehler. Nachdem ich die Datei m Editor neu erstellt habe, funktioniert es jetzt wieder ohne Fehlermeldung. Da wäre ich selber nie drauf gekommen.



    Das Ursprungsproblem ist aber geblieben. Versuche ich ein Zertifikat für eine Domain zu erstellen, bekomme ich die Fehlermeldung

    Code
    dpkg: Warnung: »ldconfig« wurde im PATH nicht gefunden oder ist nicht ausführbar
    dpkg: Warnung: »start-stop-daemon« wurde im PATH nicht gefunden oder ist nicht ausführbar
    dpkg: Fehler: 2 erwartete Programme nicht im PATH gefunden oder nicht ausführbar
    Beachten Sie: PATH von root sollte normalerweise /usr/local/sbin, /usr/sbin und /sbin enthalten
    E: Sub-process /usr/bin/dpkg returned an error code (2)
    certbot-auto failedWriting /usr/local/pd-admin2/conf/httpd.conf
    Writing /usr/local/pd-admin2/httpd-2.4/conf/httpd.conf
    webserver = <AP22>
    Apache 22 is already selected
  • Die Angaben zur PATH Variable stehen aber wieder drin?


    Leider bin ich mit Debian nicht sehr firm. Hatte mal Ubuntu auf dem Laptop, auf meinem Server setze ich CentOS ein. Der Fehler ist jedenfalls eindeutig: Die Binaries werden in PATH nicht gefunden. Die Frage ist jetzt nur, wieso nicht ?(


    Tritt der Fehler auch bei direkter Verwendung von certbot auf?


    Code
    /opt/pdadmin/bin/certbot-auto --agree-tos', '--non-interactive', '--email', 'daniel@bradler.com', '--no-self-upgrade', '--keep-until-expiring', '--expand', '--webroot', '-w', '/opt/pdadmin/etc/ssl-validation/', '-d', 'www.example.com', '-d', 'example.com'


    Ich habe dazu mal recherchiert:


    https://wiki.debian.org/EnvironmentVariables


    Hier wird ein Eintrag in /etc/environment empfohlen. Diese stellt systemweit Variablen zur Verfügung. Gleichzeitig wird aber auch /etc/profile erwähnt, welche von Bash vor Ausführung von Nutzerskripten ausgelesen wird.


    Daher würde ich zunächst die /etc/environment anlegen. Bei mir sieht diese so aus:


    Code
    # cat /etc/environment
    PATH="/usr/local/pd-admin2/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"


    Wenn dies auch keine Besserung bringt, dann einmal die Datei /etc/profile.d/paths.sh anlegen und den Inhalt


    Code
    export PATH="/usr/local/pd-admin2/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"


    Nach jedem editieren nicht vergessen sich neu einzuloggen. Bin mal gespannt was dabei heraus kommt.

  • Ich habe beide Änderungen durchgeführt und die Dateien sogar mit nano bearbeitet :).


    trotzdem noch der Fehler:

    Code
    Preconfiguring packages ...
    dpkg: Warnung: »ldconfig« wurde im PATH nicht gefunden oder ist nicht ausführbar
    dpkg: Warnung: »start-stop-daemon« wurde im PATH nicht gefunden oder ist nicht ausführbar
    dpkg: Fehler: 2 erwartete Programme nicht im PATH gefunden oder nicht ausführbar
    Beachten Sie: PATH von root sollte normalerweise /usr/local/sbin, /usr/sbin und /sbin enthalten
    E: Sub-process /usr/bin/dpkg returned an error code (2)
    certbot-auto failedWriting /usr/local/pd-admin2/conf/httpd.conf
    Writing /usr/local/pd-admin2/httpd-2.4/conf/httpd.conf
    webserver = <AP22>
    Apache 22 is already selected
  • Na gut versuchen wir es dann Mal per wrapper:


    Zuerst den certbot umbenennen, per nano neu anlegen


    Code
    $ cd /opt/pdadmin/bin
    $ mv certbot-auto certbot-auto-o
    $ nano certbot-auto


    und mit folgendem Inhalt füllen


    Bash
    #!/bin/bash
    export PATH="/sbin:/usr/local/pd-admin2/bin:/usr/local/sbin:/usr/local/bin:/bin:/usr/sbin:/usr/bin:/root/bin"
    exec /opt/pdadmin/bin/certbot-auto-o "$@"


    Damit wird die PATH Variable vor Ausführung des certbots gesetzt.

  • Damit werden erst gar keine Updates gemacht. Es kommt sofort eine Fehlermeldung

    Code
    Can't exec "/opt/pdadmin/bin/certbot-auto": Keine Berechtigung at /opt/pdadmin/bin/letsencrypt line 137.
    certbot-auto failedWriting /usr/local/pd-admin2/conf/httpd.conf
    Writing /usr/local/pd-admin2/httpd-2.4/conf/httpd.conf
    webserver = <AP22>
    Apache 22 is already selected
  • Zitat

    Original von Stefan3411
    Damit werden erst gar keine Updates gemacht. Es kommt sofort eine Fehlermeldung


    Wurde die neue Datei ausführbar gemacht? (Hatte ich vergessen mit anzugeben 8) )


    Code
    $ chmod +x /opt/pdadmin/bin/certbot-auto
  • Jetzt funktioniert es :)



    Erstmal Danke an Sumeragi für die Ausdauer und die super Hilfe.



    Eine Frage noch zum Abschluss:


    Da steht ja wenn ich das Zertifikat erneuern möchte, soll ich certbot-auto-o renew ausführen. Das ist ja die Datei die wir geändert haben. Ist es denn richtig das ich diese Datei in den Cronjob schreibe?



    und noch eine Frage: Ich habe auch eine Domain wo ein kostenpflichtiges Zertifikat (also nicht von lets encrypt) installiert ist. Ist das ein Problem wenn ich alle lets encrypt Zertifikate per cronjob aktualisieren lasse?

  • Zitat

    Jetzt funktioniert es


    Offenbar gibt es Unstimmigkeiten mit der Umgebungsvariablen wenn aus der letsencrypt Binary heraus der certbot gestartet wird.


    Zitat

    Da steht ja wenn ich das Zertifikat erneuern möchte, soll ich certbot-auto-o renew ausführen. Das ist ja die Datei die wir geändert haben. Ist es denn richtig das ich diese Datei in den Cronjob schreibe?


    Also es sollte kein Problem sein wenn der Cronjob so bleibt wie er ist:


    Code
    /opt/pdadmin/bin/certbot-auto


    Es wird certbot-auto-o angeben, da dies die eigentliche Datei ist, welche vom wrapper ausgeführt wird.


    Zitat


    und noch eine Frage: Ich habe auch eine Domain wo ein kostenpflichtiges Zertifikat (also nicht von lets encrypt) installiert ist. Ist das ein Problem wenn ich alle lets encrypt Zertifikate per cronjob aktualisieren lasse?


    Wenn ein anderes Zertifikat eingerichtet wurde, wird kein let's encrypt Zertifikat für die Domain ausgestellt. Der Cronjob erneuert letztlich nur bestehende Zertifikate. Wenn kein let's encrypt Zertifikat eingerichtet wurde, wird auch keine verlängert ;)