letsencrypt ohne python

  • Hallo Zusammen,


    ich weiß nicht wie es auch bei dem Thema SSL-Zertifikate mit letsencrypt geht.
    Auf einigen aktuellen PD-Admin-Servern mit Debian 8 und Debian 9 habe ich die von Herrn Bradler empfohlene letsencrypt-Implementierung eingerichtet. Das funktioniert gut, aber ich habe so etwas die Befürchtung das mit dem ganzen - für mich - undurchsichtigen python-kram mit Kanonen auf Spatzen geschossen wird.


    Wäre es nicht denkbar, wie bei vielen dingen im PD-Admin, eine einfache Bash-Script-Lösung für die Beantragung und Verlängerung von letsencrypt-Zertifikaten zu schaffen, die dann in der Standard-Umgebung vollständig enthalten ist?


    Sowas zum Beispiel:
    https://github.com/Neilpang/acme.sh/blob/master/README.md


    Außerdem würde ich mir in der Subdomain-Verwaltung der Kunden wünschen das ich auch Subdomains von der automatischen letsencrypt-Beantragung ausschließen kann. Denn manchmal sind Domains bei uns angelegt mit dem automatischen www. obwohl nur eine andere subdomain bei uns darauf läuft und die www. irgendwo auf einem Server ohne unseren Zugriff. Dann würde man die Fehlermeldungen im certbot reduzieren.


    Soweit meine Gedanken aktuell zu dem Thema. Da mit der EU-DSGVO die Verschlüsselung von Kontaktformularen und damit der Websites fahrt aufnimmt wäre was schlankes und praktisches wünschenswert.


    viele Grüße
    Manfred

  • Die Idee finde ich gut :-)


    Da der Wrapper /opt/pdadmin/bin/certbot-auto meine Umgebung leider nicht unterstützt, hantiere ich mit getssl herum :-\


    Eigentlich müsste man das nur noch scripten und hätte eine Lösung die unabhängig von der Umgebung ist.


  • Den Ansatz finde ich auch gut.
    Vielleicht wäre es möglich das der PD-Admin einfach eine Funktion bereit stellt die SSL-Zertifikate die in irgend einem Verzeichnis validiert liegen abarbeitet und in der Datenbank einstellt sowie die zertifikate im apache aktiviert.
    Kann sein das das mit den Zertifikaten in /opt/pdadmin/sslcerts/www.domain.org-cert / -key / -cacert schon so ist, habe ich bisher nicht ausprobiert.

  • Zitat

    Original von monderka
    Den Ansatz finde ich auch gut.
    Vielleicht wäre es möglich das der PD-Admin einfach eine Funktion bereit stellt die SSL-Zertifikate die in irgend einem Verzeichnis validiert liegen abarbeitet und in der Datenbank einstellt sowie die zertifikate im apache aktiviert.
    Kann sein das das mit den Zertifikaten in /opt/pdadmin/sslcerts/www.domain.org-cert / -key / -cacert schon so ist, habe ich bisher nicht ausprobiert.


    Ich denke ganz so einfach ist es nicht. Wenn ich mit die vadmin DB und darin die vhosts Tabelle anschaue, gibt es die Spalten 'ssl_enabled' und 'ssl_active'. Ich weiß nicht wozu diese dienen, gehe aber davon aus, dass für SSL-Zertifikat auch Änderungen in der DB notwendig sind.

  • Zitat

    Ich weiß nicht wozu diese dienen, gehe aber davon aus, dass für SSL-Zertifikat auch Änderungen in der DB notwendig sind.


    Deswegen ja

    SQL
    1. UPDATE vhosts SET ssl_enabled = '1', ssl_active='1', sni = '1' WHERE name = 'www' AND domain = (SELECT id FROM domains WHERE name = 'domain.org')


    Damit werden die Zertifikate in /opt/pdadmin/sslcerts/ genutzt.
    Zumindest reichen die aufgelisteten manuellen Schritte pro Domain, damit die unter https läuft...

  • Hallo,

    aktuelles Problem, certbot-auto will nicht mehr laufen bzw. Updates installieren und ich würde daher ebenfalls gerne auf den Python Kram verzichten. Dazu müsste man zunächst wissen, ob nur der Certbot Python benötigt oder auch das letsencrypt Script.


    Hier gibts eine Liste von ACME kompatiblen Clients als Certbot-Alternativen, ein Providerkollege empfahl mir ebenfalls acme.sh


    Hat da schonmal jemand implementiert?


    Viele Grüße,

    Martin

  • afaik wird in pd-admin /opt/pdadmin/bin/certbot-auto verwendet. Wichtig: der verwendete Client muss die gleichen Parameter verwenden/akzeptiern, wie auch der certbot. Dann könnte man versuchen ein Symlink vom Client nach /opt/pdadmin/bin/certbot-auto zu erstellen. Ist dies nicht gegeben, wird es sicher deutlich schwieriger für eine Umsetzung.

  • Es gibt noch /opt/pdadmin/bin/letsencrypt - die wird ebenfalls den certbot nutzen. Und man kann ich der aktuellen pd-admin über die Weboberfläche das letsencrypt Zertifikat installieren. Ich gehe davon aus, dass hier entweder die letsencrypt binary oder der certbot direkt ausgeführt wird.

    In jedem Fall muss der alternative Client die gleichen Parameter akzeptieren. Dann sollte eine Umstellung einfach sein. Wenn nicht muss mehr Aufwand betrieben werden.

  • Ich hab das ganze nun für mich erstmal gelöst, ich bin allerdings auf einen anderen Zertifikatanbieter gewechselt, der Zertifikate für 2 Jahre anbietet, allerdings nicht kostenfrei wie letsencrypt.


    Soviel kann ich nun sagen:

    • Es ist völlig egal wie die Zertifikats-Dateien heissen und wo sie liegen, wichtig ist nur, dass in /opt/pdadmin/sslcerts/ die passenden drei Links pro Domain/Zertifikat vorhanden sind. Diese müssen wir oben beschrieben /opt/pdadmin/sslcerts/www.domain.org-cert / -key / -cacert heissen. Die erzeugung der Schlüssel und die Installation der Links hab ich mit einem kleinen Shellscript erledigt.
    • Dazu reicht es dann, in der Tabelle vadmin.vhosts die in Beitrag #5 von Kai beschriebenen Änderungen vorzunehmen. Ob es dazu einen Schalter im Frontend gibt, hab ich nicht geprüft, ich habs direkt in der DB geändert
    • /opt/pdadmin/bin/http_vhosts.pl ausführen und die Zertifikate werden verwendet
    • das von Herrn Bradler gestellte Script dc-ssl-install.sh installiert die Zertifikate für email und ftp
    • mit dem Entfernen der Crons zur Aktualisierung ist das Thema erledigt.

    Zusammengefasst kann man also jeden beliebigen Anbieter und jeden beliebigen Client nutzen, solange die Zertifikate richtig verlinkt sind. Wenn sich jemand mit letsencrypt in Verbindung mit dem Client acme.sh beschäftigen könnte und das hier veröffentlicht, wäre ich dankbar.


    Viele Grüße,

    Martin

  • Hallo Martin,


    mit welchem Zertifikatsanbieter hast du das so automatisiert? Wenn die Zertifikate 2 Jahre gelten wäre das auch eine Überlegung wert. Wenn es da andere Anbeiter als letsencrypt geben würde die mit PD-Admin arbeiten wäre ich schon offen dafür. Ich hatte mal mit Comodo versucht aber bin da irgendwie nicht weiter gekommen.


    viele Grüße

    Manfred

  • Ich habe mir eine eigene Lösung gebaut für letsencrypt, mittels dehydrated: https://github.com/lukas2511/dehydrated


    Das initiale erstellen eines zertis muss ich derzeit noch händisch machen mittels "dehydrated -c -d hostname". AB DANN hab ich ein script das täglich läuft und die vadmin datenbank nach allen ssl hosts anzapft. Findet es eins, schaut es im dehydrated certs Verzeichnis nach, ob es auch wirklich ein selbst erstelltes ist (könnte ja auch irgendein anderes zerti sein, zb eines dass der Kunde selbst gekauft hat). Wenn dem so ist, wird der dehydrated Befehl angeworfen und dieser erneuert das zerti, SOFERN es in weniger als 14 Tagen abläuft. Wenn es erneuert wurde, kopiert das script die zertis mit der nötigen Benennung nach /opt/pdadmin/sslcerts und macht einen apache reload.


    Damit fahr ich recht gut auf vielen Servern. Ich hatte das schon fertig, bevor pd-admin begonnen hatte letsencrypt selbst zu implementieren, daher habe ich es auch weiterhin so gelassen.

  • mit welchem Zertifikatsanbieter hast du das so automatisiert?

    Das ist der Haken: ich hab das nicht automatisiert sondern mache das manuell. Fürs erzeugen des Schlüssels und des CSR sowie der Links hab ich ein Shellscript gebaut, der Rest geht manuell, Beantragung über die Webseite des Anbieters. Bei 30-40 Kunden und zwei Jahren Laufzeit kann man das machen, geht aber sicherlich besser...


    Viele Grüße,

    Martin