SSL-Zertifikat von Let's Encrypt: Nur eine Subdomain bei Netcup

  • Hallo zusammen,


    ich betreibe eine Website auf zwei Root-Servern bei Netcup. Meinen Mail-Server betreibe ich über ein normales Webhosting-Produkt - zudem möchte ich das Webhosting-Produkt verwenden, um eine Subdomain darüber zu betreiben. Die Struktur sieht also so aus:

    Root-Server1: (www.)example.com
    Root-Server2: cdn.example.com + Datenbank
    Webhosting 8000: wiki.example.com + Mailserver

    All meine Domains sind über Cloudflare geproxied und geschützt, daher scheitere ich daran, ein SSL-Zertifikat für das Webhosting auszustellen. Auf den beiden Root-Servern verwende ich ein Origin-Certificate von Cloudflare. Ich habe versucht, dieses als "PEM"-File im WCP hochzuladen, jedoch ohne Erfolg. Der Versuch, ein Let's Encrypt Zertifikat selbst zu erstellen scheitert, da natürlich die Domain auf eine andere IP zeigt und ohnehin nur die Subdomain "wiki" auf dem Webhosting liegt.

    Hat jemand eine Idee, wie ich hier vorgehen könnte? Ich habe daran gedacht, die DNS-Challenge von LetsEncrypt zu machen, anstelle der HTTP-Challenge. So oder so scheitert es daran, dass ich keine Möglichkeit habe mit root-Rechten auf die SSH zu Certbot zu gelangen. Ich weiß hier gerade nicht weiter und Google konnte mir auch noch nicht helfen.

    Vielen Dank vorab und liebe Grüße!

  • Die DNS Challenge würde ich sein lassen, da du hier regelmäßig die Challenge manuell anpassen musst (keine Verbindung vom Webhosting zum DNS).

    Was ich aus deinem Text nicht herauslesen konnte, funktioniert die http Challenge nicht?

    Wir sprechen ja nicht von einem Wildcard Zertifikat, eines für wiki… sollte ja ausreichend sein.

  • Beim "PEM"-File gibt es verschiedene Varianten: Public Key+Private Key oder Public Key+Private Key + Intermediate.

    Und die sollten dann noch korrekt konfiguriert sein.


    https://serverfault.com/questions/254627/how-do-i-convert-a-cer-certificate-to-pem


    Aber, im Fall von letsencrypt und cf - da muss natürlich der Proxy das Zertifikat von LE haben. Das würde bedeuten, DNS-01 mit CF zu machen und den Proxy auf eine alternative Domain oder Subdomain zeigen zu lassen. Das muss man sich im Detail ansehen, wie das am vernünftigsten ist.


    Eventuell hilft dieser Thread, den ich nur überflogen habe, weiter:

    https://community.letsencrypt.org/t/how-to-get-a-lets-encrypt-certificate-while-using-cloudflare/6338/16

  • Die DNS Challenge würde ich sein lassen, da du hier regelmäßig die Challenge manuell anpassen musst (keine Verbindung vom Webhosting zum DNS).

    Was ich aus deinem Text nicht herauslesen konnte, funktioniert die http Challenge nicht?

    Wir sprechen ja nicht von einem Wildcard Zertifikat, eines für wiki… sollte ja ausreichend sein.

    Danke für die Antwort Patrick! Das war auch mein Gedanke - wenn ich im WCP unter "SSL/TLS für wiki.example.com" das Zertifikat für "Domainname schützen" (nicht Wildcard oder www-subdomain) wähle, kommt der Fehler (siehe Screenshot). Wenn ich dem Link folge, wird die Datei korrekt angezeigt. Es ist aber so, dass der Link zu HTTP zeigt und ich beim Folgen des Links automatisch zu HTTPS weitergeleitet werde (obwohl ich die SEO-Freundliche-HTTPS-Weiterleitung deaktiviert habe). Könnte das ein Problem sein? HTTPS funktioniert ja auch nur, da hierbei ja nur die Verbindung zwischen Cloudflare und dem Client verschlüsselt wird, in dem Fall kommunizieren aber Cloudflare und der Netcup-Webserver unverschlüsselt.

  • Vielen herzlichen Dank für die Antwort! Ich muss gestehen, das ist weit entfernt von meinem Fachgebiet, aber wenn ich das richtig verstehe bietet CF schon ein korrektes PEM-File an. Auf dem Root-Server musste ich dann ja sowohl den Private als auch den Public-Key in einem Verzeichnis ablegen und dann beide (sowohl PEM als auch KEY-File) in die NGINX-Konfiguration aufnehmen - im WCP kann ich ja nur ein PEM-File hochladen, daher bin ich mir nicht ganz sicher ob das so überhaupt klappen könnte.

    Selbst bei der DNS-Challenge scheitere ich, da ich ja keinen SSH-Root-Zugriff habe. Ohnehin ist das eher die Notlösung, da ich damit die automatische Verlängerung nicht bewerkstelligen kann (sofern ich das richtig verstanden habe). Ich lese mich mal tiefer in die von dir verlinkten Beiträge ein, vielen Dank!

  • Vielen herzlichen Dank für die Antwort! Ich muss gestehen, das ist weit entfernt von meinem Fachgebiet, aber wenn ich das richtig verstehe bietet CF schon ein korrektes PEM-File an. Auf dem Root-Server musste ich dann ja sowohl den Private als auch den Public-Key in einem Verzeichnis ablegen und dann beide (sowohl PEM als auch KEY-File) in die NGINX-Konfiguration aufnehmen - im WCP kann ich ja nur ein PEM-File hochladen, daher bin ich mir nicht ganz sicher ob das so überhaupt klappen könnte.

    Selbst bei der DNS-Challenge scheitere ich, da ich ja keinen SSH-Root-Zugriff habe. Ohnehin ist das eher die Notlösung, da ich damit die automatische Verlängerung nicht bewerkstelligen kann (sofern ich das richtig verstanden habe). Ich lese mich mal tiefer in die von dir verlinkten Beiträge ein, vielen Dank!

    Laut dieser Liste sollte CF mit DNS-01 „einfach“ umgehen können:


    https://community.letsencrypt.org/t/dns-providers-who-easily-integrate-with-lets-encrypt-dns-validation/86438


    Die Anleitung hier nützt ein die Cloudflare-API und ein Token. Aufgerufen wird das über einen Cronjob mittels curl

    https://www.nodinrogers.com/post/2022-03-10-certbot-cloudflare-docker/


    Ich bin mir aber nicht sicher, ob das die Lösung ist, die Du suchst.

  • Wieso werden nicht einfach zwei/drei getrennte Zertifikate genutzt?


    1) Webhosting (wiki.example.ente) via http challenge, das Plesk problemlos selbstständig verlängern kann. Eigene Zertifikate im WCP hochladen wirst du hier nicht automatisiert erledigen können.

    2) für die Server dann entweder ebenfalls via http challenge mehrere einzelne Zertifikate oder eben über die dns challenge ein WIldcard-Zertifikat und entsprechend deployen - klappt auch einwandfrei mit der Netcup DNS-API und einem Client mit integrierter Netcup Unterstützung (wie certbot oder acme.sh)


    Edith meint noch dazu: hmm.. hab deinen Cloudflare Proxy überlesen. Dann wird man wohl die Zertifikate über deren DIenste erstellen müssen, ja.

  • Vielen Dank für den Denkanstoß! Ich habe das mal wie folgt versucht:

    1. CloudFlare-Certbot installieren (auf einem Root-Server): sudo apt install certbot python3-certbot-dns-cloudflare
    2. API-Key von Cloudflare in einer INI-Datei ablegen
    3. Certbot seine Arbeit machen lassen: sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /cloudflareapikey.ini -d wiki.example.com


    Soweit, so gut. Certbot meldet sich erfolgreich, die Keys werden auf dem Root-Server abgelegt. Beim Versuch, diese im Netcup WCP hochzuladen, kommt jedoch immer der Fehler, dass der "private key ungültig" sei. Ich bin mir nichtmal sicher, welche Datei ich in PLESK hochladen sollte (cert1.pem? chain1.pem? fullchain.pem? privkey1.pem? - Jedenfalls funktioniert keine davon).

    Ohne Root-Rechte auf dem Webhosting bleibt die Lösung aber ohnehin sehr unbefriedigend, da ich dann monatlich kurz vor Ablauf der Zertifikate einen Down- und Upload machen müsste. Hat noch jemand eine Idee?

  • Und wie so oft in der IT konnte eine lange Nacht voll mit Experimenten das Problem lösen :) Und zwar simpler als gedacht, denn Plesk bietet ja schon alles was man dazu braucht: https://support.plesk.com/hc/e…0%3E%20Private%20key%20(*.

    Ich habe also das Origin-Certificate von Cloudflare auf Netcup angelegt (nicht die PEM-Datei hochgeladen, sondern das Zertifikat angelegt) und dann der Subdomain zugeordnet. Siehe da: SSL/TLS-Status "FULL STRICT" und alles funktioniert einwandfrei.

    Vielen Dank für die vielen Beiträge und Hilfestellungen!