Update: Sekundärer Domainname auf der Standalone-Installation erfolgreich konfiguriert und ein Let’s Encrypt-Zertifikat ausgestellt, um sowohl den alten als auch den neuen Namen zu verarbeiten.
Voraussetzung: Ich habe die DNS-Einträge noch nicht geändert, um den Traffic auf die neue Site umzuleiten; ich wollte sicherstellen, dass alles vorher funktioniert. Daher habe ich auf meinem Testrechner einen localhost-Eintrag verwendet. Das bedeutet, ich konnte keine normale Let’s Encrypt-Verifizierung durchführen und musste stattdessen die „DNS“-Methode von acme.sh verwenden, die generell nicht empfohlen wird, da sie kein automatisches Erneuern unterstützt. Für mich ist das in Ordnung, da ich innerhalb der 30-Tage-Laufzeit des „initialen“ (neu ausgestellten 2-Namen-)Zertifikats umstellen werde.
- In meiner
web_only.yml-Datei (möglicherweise verwenden Sie app.yml) unter dem Abschnitt hooks: und vor den Plugins folgendes hinzugefügt:
after_ssl:
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d second-domain.com --keylength"
-
In DNS einen vorübergehenden/ungültigen TXT-Eintrag für _acme-challenge.old.example.org mit einer TTL von 5 Minuten einrichten (Sie könnten diese auch kürzer setzen) und warten, bis er propagiert ist, um den Wechsel mit dem Verifikationsschlüssel von acme.sh (Let’s Encrypt) schnell durchführen zu können.
-
Die Site stoppen und eine Debug- (Test-)Validierung durchführen, damit das System den kurzen TTL des neuen Eintrags erkennt:
./launcher enter app
sv stop nginx
/usr/sbin/nginx -c /etc/nginx/letsencrypt.conf
LE_WORKING_DIR=/shared/letsencrypt DEBUG=1 /shared/letsencrypt/acme.sh --issue -d new.example.org -d old.example.org -k 4096 -w /var/www/discourse/public --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please --force
- Den Vorgang diesmal ohne Debug-Einstellung tatsächlich ausführen. Dies führt zu einer Warnung mit dem Wert, den Sie für den in Schritt 2 erstellten Eintrag in DNS verwenden müssen:
LE_WORKING_DIR=/shared/letsencrypt /shared/letsencrypt/acme.sh --issue -d new.example.org -d old.example.org -k 4096 -w /var/www/discourse/public --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please --force
-
DNS aktualisieren und dann 5 Minuten warten. Ja, Sie sollten die ganze Zeit warten, um die Einschränkungen von Let’s Encrypt nicht zu überschreiten.
-
Eine ähnliche Version des letzten Befehls im renew-Modus ausführen:
LE_WORKING_DIR=/shared/letsencrypt /shared/letsencrypt/acme.sh --issue -d new.example.org -d old.example.org -k 4096 -w /var/www/discourse/public --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please --force --renew
- Sie sollten eine Bestätigung erhalten. Führen Sie Folgendes aus, um die Aufräumarbeiten durchzuführen und das neue Zertifikat zu aktivieren:
LE_WORKING_DIR=/shared/letsencrypt /shared/letsencrypt/acme.sh --installcert -d new.example.org -d old.example.org --fullchainpath /shared/ssl/new.example.org.cer --keypath /shared/ssl/new.example.org.key --reloadcmd "sv reload nginx"
/usr/sbin/nginx -c /etc/nginx/letsencrypt.conf -s stop
exit
- Letzter Schritt, nachdem Sie den Launcher verlassen haben:
rm -rf /var/discourse/shared/standalone/ssl
rm -rf /var/discourse/shared/standalone/letsencrypt
./launcher rebuild app
Sobald die Site wieder verfügbar ist, sollte sie mit dem neuen Zertifikat laufen. Möglicherweise müssen Sie die gespeicherten Zertifikate in Ihrem Browser löschen, was als Übung für den Leser und Ihre bevorzugte Suchmaschine überlassen bleibt.
Danke an alle, die mich in die richtige Richtung gelenkt haben!