SSL-Zertifikate erstellen
Diese Tutorials behandeln kurz das Erstellen neuer SSL-Zertifikate für Ihr Panel und/oder Wings.
Certbot (Empfohlen)
Wir beginnen mit der Installation von Certbot, einem einfachen Skript, das unsere Zertifikate automatisch erneuert und deren Erstellung viel einfacher macht. Der folgende Befehl ist für Ubuntu-Distributionen, aber Sie können immer Certbots offizielle Website für Installationsanweisungen prüfen.
sudo apt install -y python3-certbot-nginx
sudo apt install -y python3-certbot-apache
sudo apt install -y certbot
Zertifikat erstellen
Nach der Installation von Certbot müssen wir ein Zertifikat generieren. Es gibt mehrere Möglichkeiten, dies zu tun, aber am einfachsten ist es, das webserver-spezifische Certbot-Plugin zu verwenden, das Sie gerade installiert haben.
Im folgenden Befehl sollten Sie example.com durch die Domain ersetzen, für die Sie ein Zertifikat generieren möchten. Wenn Sie mehrere Domains haben, für die Sie Zertifikate möchten, fügen Sie einfach weitere -d anotherdomain.com Flags zum Befehl hinzu.
HTTP Challenge
HTTP Challenge erfordert, dass Sie Port 80 für die Challenge-Verifizierung freigeben.
certbot certonly --nginx -d example.com
certbot certonly --apache -d example.com
certbot certonly --standalone -d example.com
DNS Challenge
DNS Challenge erfordert, dass Sie einen neuen TXT DNS-Eintrag erstellen, um die Domain-Eigentümerschaft zu verifizieren, anstatt Port 80 freigeben zu müssen. Die Anweisungen werden angezeigt, wenn Sie den folgenden Certbot-Befehl ausführen.
certbot -d example.com --manual --preferred-challenges dns certonly
Automatische Erneuerung
Sie möchten wahrscheinlich auch die automatische Erneuerung von Zertifikaten konfigurieren, um unerwartete Zertifikatsabläufe zu verhindern. Sie können Crontab mit sudo crontab -e öffnen und die folgende Zeile am Ende hinzufügen für den Versuch der Erneuerung jeden Tag um 23 Uhr (11 PM).
Deploy Hook würde den Nginx-Service neu starten, um ein neues Zertifikat anzuwenden, wenn es erfolgreich erneuert wurde. Ändern Sie nginx im Restart-Befehl entsprechend Ihren Bedürfnissen, z.B. zu apache oder wings.
0 23 * * * certbot renew --quiet --deploy-hook "systemctl restart nginx"
Fehlerbehebung
Wenn Sie eine Unsichere Verbindung oder SSL/TLS-bezogene Fehler beim Zugriff auf Ihr Panel oder Wings erhalten, ist das Zertifikat wahrscheinlich abgelaufen. Dies kann einfach durch Erneuerung des SSL-Zertifikats behoben werden, obwohl der Befehl certbot renew möglicherweise nicht funktioniert, wenn Port 80 in Verwendung ist.
Die Lösung dafür ist die Verwendung der Nginx- oder Apache-Plugins mit --nginx und --apache. Alternativ können Sie Nginx stoppen, dann das Zertifikat erneuern und schließlich Nginx neu starten.
Nginx stoppen:
systemctl stop nginx
Zertifikat erneuern:
certbot renew
Sobald der Prozess abgeschlossen ist, können Sie Nginx neu starten:
systemctl start nginx
Sie müssen möglicherweise auch Wings neu starten, da nicht jeder Service in der Lage ist, ein aktualisiertes Zertifikat automatisch anzuwenden:
systemctl restart wings
Apache mit CloudFlare API (Erweitert)
curl https://get.acme.sh | sh
CloudFlare API-Schlüssel erhalten (Legacy)
Nach der Installation von acme.sh müssen wir einen CloudFlare API-Schlüssel abrufen. Wählen Sie auf der Cloudflare-Website Ihre Domain aus, kopieren Sie dann auf der rechten Seite Ihre "Zone ID" und "Account ID". Klicken Sie auf "Get your API token", klicken Sie auf "Create Token" > wählen Sie die Vorlage "Edit zone DNS" > wählen Sie den Bereich "Zone Resources".
Zertifikat erstellen
Da die Konfigurationsdatei auf Certbot basiert, müssen wir den Ordner manuell erstellen.
sudo mkdir -p /etc/letsencrypt/live/example.com
Nach der Installation von acme.sh und dem Erhalt des CloudFlare API-Schlüssels müssen wir dann ein Zertifikat generieren. Geben Sie zuerst die CloudFlare API-Anmeldedaten ein.
export CF_Token="Your_CloudFlare_API_Key"
export CF_Account_ID="Your_CloudFlare_Account_ID"
export CF_Zone_ID="Your_CloudFlare_Zone_ID"
Caddy mit CloudFlare API (Erweitert)
Caddy mit Cloudflare DNS-Plugin installieren
Caddy kommt standardmäßig nicht mit dem Cloudflare DNS-Plugin, Sie müssen es selbst installieren.
Es gibt zwei Hauptmethoden:
- Verwendung von
xcaddy- CLI-Tool zum Erstellen Ihres eigenen Caddy-Builds - Herunterladen vorgefertigter Binärdateien von Caddys Download-Seite
- Verwendung von Ansible zum Herunterladen und Installieren von Caddy mit Plugins
CloudFlare API-Token erhalten
Nach der Installation von Caddy mit Cloudflare DNS-Plugin müssen wir ein Cloudflare API-Token abrufen. Stellen Sie sicher, dass ein DNS-Eintrag (A- oder CNAME-Eintrag) auf Ihren Zielknoten zeigt. Gehen Sie dann zu My Profile > API Tokens und klicken Sie bei API Tokens auf "Create Token".
Caddy neu konfigurieren, um Cloudflare DNS für Zertifikatserstellung zu verwenden
Erstellen Sie eine Umgebungsvariablen-Datei (wie .env), bedenken Sie, dass diese Datei Geheimnisse enthält und nicht öffentlich zugänglich sein sollte.
Wir empfehlen, dass Sie die Geheimnisdatei am folgenden Ort erstellen: /etc/caddy/.secrets.env.
CLOUDFLARE_API_TOKEN=<cloudflare api token>
Aus Sicherheitsgründen empfehlen wir, Berechtigungen auf 0600 zu setzen (nur Besitzer kann die Datei lesen oder schreiben).
# Besitz der `.secrets.env` Datei auf `caddy` Systembenutzer setzen
sudo chown caddy:caddy /etc/caddy/.secrets.env
# Lese-Schreibberechtigungen nur für Besitzer setzen - den `caddy` Systembenutzer
sudo chmod 0600 /etc/caddy/.secrets.env
Sie können einen tls Block zu Ihrem Caddyfile hinzufügen, unter dem <domain> Block Ihrer Panel-Konfiguration:
<domain> {
# ...
tls {
dns cloudflare {env.CLOUDFLARE_API_TOKEN}
}
}