Zum Inhalt

Meine ersten Deployments · 6.7

Nginx

Tutorial 11 · 2:23EN-Ton, DE-Untertitel
Auf dieser Seite
Tutorial 11: Nginx · 2:23 · EN-Ton, DE-UntertitelIm Tutorial-Bereich öffnen

Dieses Beispiel verteilt ein Zertifikat auf einen Nginx-Server unter Linux. Apache und andere Linux-Dienste werden gleich konfiguriert. Der Management-Host muss den Server über SSH erreichen, siehe Kapitel Netzwerkverbindungen.

  1. Öffnen Sie den Tab Deployments des Zertifikats wie in Kapitel Lokaler Zertifikatsspeicher beschrieben, schalten Sie Automatic deployment ein, falls noch nicht geschehen, und klicken Sie auf Add…
  2. Linked service: Wählen Sie Nginx.
  3. Target host: Geben Sie den Namen oder die IP-Adresse des Servers ein.
  4. Credential: Wählen Sie ein SSH-Credential. Gibt es noch keines, klicken Sie auf Manage…, im Credentials Manager auf Add… und wählen unter Credential type im Abschnitt Servers den Eintrag Linux SSH (Nginx / Apache). Die Liste ist in die Abschnitte Cloud, DNS, Servers, Appliances, Certificate authority, Notifications und Secrets and other gegliedert; tippen Sie in das Filterfeld, um sie einzugrenzen. Geben Sie einen Display name, den SSH user name und unter Password or private key PEM ein Passwort oder einen privaten Schlüssel im PEM-Format ein. TLSPilot erkennt automatisch, was Sie eingegeben haben. Klicken Sie auf Save und schliessen Sie den Credentials Manager. Das Credential wird dann automatisch ausgewählt.
SSH-Credential im Credentials Manager
SSH-Credential im Credentials Manager
  1. Tab Discovery: Öffnen Sie den Tab Discovery. Unter Servers zeigt TLSPilot den Server mit Zertifikatspfad, Pfad des privaten Schlüssels und dem aktuell auf dem Ziel vorhandenen Zertifikat. Schalten Sie ihn ein. Lassen Sie die Pfade im Tab Manual leer, verwendet TLSPilot die Standardpfade unter /etc/ssl/tlspilot/. TLSPilot schreibt nur die Dateien; die Nginx-Konfiguration muss bereits darauf verweisen.
  2. SSH port: Belassen Sie den Standardport 22, sofern SSH auf dem Server nicht auf einem anderen Port konfiguriert ist.
  3. File owner (optional) und File group (optional): Lassen Sie sie leer, sofern die Dateien nicht einem bestimmten Benutzer oder einer bestimmten Gruppe gehören müssen.
  4. Least-privilege wrapper is installed: Schalten Sie dies ein, sobald der Server mit dem Helper-Skript im nächsten Schritt vorbereitet ist. Ist der Schalter aus, verteilt TLSPilot direkt ohne Wrapper. Auf einem gehärteten Host, auf dem der SSH-Benutzer nur über den Wrapper schreiben darf, schlägt das Deployment dann fehl. Ist der Schalter ein und der Wrapper auf dem Host nicht installiert, bricht das Deployment ebenfalls mit einem Fehler ab.
Nginx-Deployment, Tab Discovery mit dem Schalter Least-privilege wrapper is installed
Nginx-Deployment, Tab Discovery mit dem Schalter Least-privilege wrapper is installed
  1. Linux-Host vorbereiten: Öffnen Sie den Tab Helper und klicken Sie auf Show script… Das Skript bereitet den Server einmalig für dieses Deployment vor. Vereinfacht gesagt:
    • Es prüft, ob der SSH-Benutzer existiert. Das Skript legt diesen Benutzer nicht an; erstellen Sie ihn zuerst mit Schlüssel-Login, siehe Kapitel SSH für Linux-Ziele.
    • Es installiert ein kleines Programm, den Least-Privilege-Wrapper, für genau dieses Deployment. Der SSH-Benutzer darf nur diesen Wrapper mit Administratorrechten ausführen, und der Wrapper kann nur, was dieses Deployment braucht: die Zertifikatsdateien schreiben und den Dienst neu laden. Ein zweiter Wrapper liest für den Tab Discovery nur die Dienstkonfiguration und die darin genannten Zertifikate. Weitere Rechte auf dem Server erhält der Benutzer nicht.
    • Am Ende prüft es mit sudo -l, ob der SSH-Benutzer nur die TLSPilot-Wrapper ausführen darf. Hat der Benutzer weitere sudo-Regeln oder ist er Mitglied der Gruppe sudo, wheel oder admin, bricht das Skript mit einem Fehler ab.
  • Klicken Sie auf Copy, kopieren Sie das Skript auf den Linux-Host und führen Sie es einmal als root aus. TLSPilot führt dieses Skript nicht über SSH aus. Jedes Deployment erhält einen eigenen Wrapper; führen Sie deshalb das Skript jedes Deployments einmal aus.
  • Zwei weitere Schalter im Tab Configuration erweitern das Skript: Remove existing sudoers rights and group memberships und Make the SSH account key-only. Beide sind standardmässig ausgeschaltet. Lassen Sie sie aus, sofern Sie sie nicht brauchen, siehe Kapitel SSH für Linux-Ziele.
Nginx-Deployment, Tab Helper mit Config helper, Required Permissions und What the helper writes
Nginx-Deployment, Tab Helper mit Config helper, Required Permissions und What the helper writes
  1. Klicken Sie auf Test (dry run)… und korrigieren Sie die Einstellungen, falls ein Fehler gemeldet wird.
  2. Klicken Sie auf OK und dann auf Save. Auf die Frage, ob jetzt verteilt werden soll, klicken Sie auf Yes.

TLSPilot kopiert die Dateien über den Wrapper auf den Server, lädt Nginx neu und prüft danach die Health: Die Zertifikatsdatei ist gebunden, und das vom Server ausgelieferte Zertifikat stimmt überein. Klicken Sie auf Close, sobald das Deployment abgeschlossen ist.

Ergebnis des Nginx-Deployments mit Health-Check
Ergebnis des Nginx-Deployments mit Health-Check

Apache funktioniert genau gleich wie Nginx, einschliesslich Helper-Skript und Schalter Least-privilege wrapper is installed: Wählen Sie unter Linked service den Eintrag Apache. HAProxy verwendet eine PEM-Datei mit Zertifikat, privatem Schlüssel und Kette, und die HAProxy-Konfiguration muss auf diese Datei verweisen. Tomcat verwendet eine Keystore-Datei mit Alias und Passwort, die zur Tomcat-Konfiguration passen müssen.