Einrichtung von Let's Encrypt mit mehreren Domains / Weiterleitungen

Ich habe dies gerade aktualisiert, da die alte Version nicht mehr funktionierte. Ich habe es auf zwei Websites getestet, daher denke ich, dass es gut sein sollte.

3 „Gefällt mir“

EDIT: Habe eine Lösung gefunden, ignoriert alles unten, aber lasse es für zukünftige Leute hier. Die Lösung ganz unten lassen.

Bin gerade auf diesen Thread gestoßen. Also, meine Seite ist: forums.mysite.me. Ich habe 3 Domains in meiner NGINX-Konfiguration und bei meinem Domainanbieter, die ich über DNS CNAMEs verwende und die als unsicher zurückkommen:

mysite.me
www.mysite.me
forum.mysite.me (ohne das "s", falls jemand die URL falsch schreibt oder errät)

Verwende ich meine Basisdomain in der Konfiguration, die im ursprünglichen Beitrag steht? Oder wie richte ich es für alle 3 ein?

after_ssl:
   # letsencrypt sagen, welche zusätzlichen Zertifikate es abrufen soll
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d forums.mysite.me --keylength"
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--fullchainpath/
        to: "-d forums.mysite.me  --fullchainpath"

Ich bin verwirrt, weil der erste “replace”-Abschnitt from: /--keylength/ hat und der darunter from: /--fullchainpath/. Soll ich also für jede der 3 aufgelisteten URLs 2 Einträge wie diese machen? Oder wäre es so?

after_ssl:
   # letsencrypt sagen, welche zusätzlichen Zertifikate es abrufen soll
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d mysite.me -d www.mysite.me -d forum.mysite.me --keylength"
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--fullchainpath/
        to: "-d mysite.me -d www.mysite.me -d forum.mysite.me  --fullchainpath"

^ Ja, die obige Box hier war die Lösung für mehrere Websites/LetsEncrypt. So aufgeregt.

1 „Gefällt mir“

Ja. Es gibt zwei verschiedene Ersetzungen in der Datei, die mit den Hostnamen aktualisiert werden müssen.

Ist das nicht das, was der Beitrag oben ergeben hat, als Sie die Namen wie beschrieben eingegeben haben?

Wie können wir den OP bearbeiten, damit er nicht verwirrend ist?

1 „Gefällt mir“

Persönlich würde ich vorschlagen, das über das Eingabefeld zu verschieben, damit man es beim Tippen sieht.

Der Beitrag hat das gegeben, ja, aber ich habe ihn nicht verstanden, weil

Warum beantwortet der Abschnitt „wenn Sie mehrere Domains hinzufügen müssen“, den ich zitiert habe, das nicht?

1 „Gefällt mir“

OK. Wie wäre es damit:

und dann nach dem zu kopierenden Code geht es weiter:

Macht das Sinn?

1 „Gefällt mir“

Ich denke, es ist am einfachsten, den tatsächlichen Code mit mehreren Websites als Beispiel zu verwenden, das ich oben verwendet habe:

after_ssl:
   # tell letsencrypt what additional certs to get
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d mysite.me -d www.mysite.me --keylength"
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--fullchainpath/
        to: "-d mysite.me -d www.mysite.me --fullchainpath"

Ich denke, die meisten Leute möchten nur eine zusätzliche Domain hinzufügen, daher ist mein Weg einfacher und bietet eine einfache Möglichkeit, genau den Text zu erhalten, den Sie benötigen, ohne ihn bearbeiten zu müssen.

Vielleicht ist es immer noch klar, dass, wenn Ihre Website discourse.y.com ist und Sie Zertifikate für discourse.y.com und y.com wünschen, Sie nur y.com im Feld „domain2“ eingeben und auf das Kopiersymbol klicken müssen?

In Ihrem Beispiel, wenn Sie Ihr Discourse als mysite.com konfiguriert haben, benötigen Sie den Teil -d mysite.me in Ihrem Beispiel nicht (oder wenn Ihre Website www.mysite.me ist, benötigen Sie nur den Teil -d mysite.me).

4 „Gefällt mir“

In welcher Datei wird dieser Code hinzugefügt?

1 „Gefällt mir“

Der Code sollte fast am Ende Ihrer app.yml-Datei im Abschnitt hooks hinzugefügt werden:

3 „Gefällt mir“

18 Beiträge wurden in ein neues Thema aufgeteilt: Let’s Encrypt mit mehreren Domains funktionierte nicht für ECC-Zertifikate

Benötige ich die beiden anderen Code-Snippet-Ersetzungen noch oder reicht dieses neue Code-Snippet aus?

Ich habe es hinzugefügt und neu kompiliert, aber ich erhalte immer noch eine SSL-Datenschutzfehlermeldung, wenn ich eine der HTTPS-Domains aufrufe, die ich umleiten möchte.

Wenn ich mir das Zertifikat ansehe, ist sein Common Name forum.domain.com, wobei O und OU nicht Teil des Zertifikats sind.
Ich versuche, https://domain.com und https://www.domain.com auf https://forum.domain.com umzuleiten.

Wenn ich http://domain.com und http://www.domain.com verwende, werden diese korrekt zu https://forum.domain.com umgeleitet.

Was hast du eingefügt? Wie sieht deine after_ssl-Klausel aus?

Sieht so aus (den tatsächlichen Domainnamen geändert)

  after_ssl:
    - replace:
        filename: /etc/runit/1.d/letsencrypt
        from: /-d forum.mydomain.com /
        to: -d forum.mydomain.com -d www.mydomain.com -d mydomain.com
        global: true

Ich habe auch Folgendes hinzugefügt:

LETSENCRYPT_ALTERNATE_NAMES: mydomain.com,www.mydomain.com

Browserfehler ist:
net::ERR_CERT_COMMON_NAME_INVALID

Lösen alle Namen auf? Haben sie nicht Cloudflare davor? Hast du Rate-Limits erreicht? Du kannst im Container nachsehen und /etc/runit/1.d/letsencrypt ausführen, um zu sehen, was passiert.

Alle Namen werden aufgelöst, kein Cloudflare, die Trefferquoten sollten in Ordnung sein.

Hier ist das Ergebnis der Ausführung von letsencrypt;

(Domainname ersetzt)

/var/www/discourse# /etc/runit/1.d/letsencrypt
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[Tue Apr 29 04:02:13 PM UTC 2025] Unknown parameter : 4096
[Tue Apr 29 04:02:13 PM UTC 2025] Installing key to: /shared/ssl/forum.domain.com.key
[Tue Apr 29 04:02:13 PM UTC 2025] Installing full chain to: /shared/ssl/forum.domain.com.cer
[Tue Apr 29 04:02:13 PM UTC 2025] Run reload cmd: sv reload nginx
ok: run: nginx: (pid 429) 10662s
[Tue Apr 29 04:02:13 PM UTC 2025] Reload success
[Tue Apr 29 04:02:13 PM UTC 2025] Unknown parameter : ec-256
[Tue Apr 29 04:02:14 PM UTC 2025] Installing key to: /shared/ssl/forum.domain.com_ecc.key
[Tue Apr 29 04:02:14 PM UTC 2025] Installing full chain to: /shared/ssl/forum.domain.com_ecc.cer
[Tue Apr 29 04:02:14 PM UTC 2025] Run reload cmd: sv reload nginx
ok: run: nginx: (pid 429) 10663s
[Tue Apr 29 04:02:14 PM UTC 2025] Reload success

Ich habe in die Datei geschaut, hier ist eine interessante:

issue_cert() {
  LE_WORKING_DIR="${LETSENCRYPT_DIR}" /shared/letsencrypt/acme.sh --issue $2 -d forum.domain.com -d www.domain.com -d domain.com--keylength $1 -w /var/www/discourse/public
}

Sieht so aus, als würde ein Leerzeichen zwischen der letzten Domain und --keylength fehlen?

domain.com--keylength

Das Beheben dieses Problems hat das Problem gelöst, vielen Dank für die Hilfe

Ich gehe davon aus, dass die Korrektur darin besteht, auch dem Feld to: ein / hinzuzufügen?

  after_ssl:
    - replace:
        filename: /etc/runit/1.d/letsencrypt
        from: /-d forum.domain.com /
        to: "-d forum.domain.com -d www.domain.com "
        global: true

Es sollten Anführungszeichen sein, keine Schrägstriche. Ich habe deinen Beitrag und den OP bearbeitet. Was du jetzt hast, sollte funktionieren.