Benutzer-Werkzeuge

Webseiten-Werkzeuge


zertifikate:pki:server-zertifikate

zurück

TLS- / SSL- / Serverzertifikate

Zweck: Transportverschlüsselung (TLS/SSL) für die Kommunikation mit HTTPS, FTPS, RDP, SMTPS, LDAPS, usw. zu Servern

Es existiert kein plausibler Grund, einen produktiven Dienst an der Hochschule Schmalkalden zu betreiben, der für seine Transportverschlüsselung das Hinzufügen von Zertifikatsausnahmen benötigt! Dies stellt vor allem ein Sicherheitsrisiko für die Nutzer dar! Die Hochschule Schmalkalden besitzt die nötige Infrastruktur, um solche Risiken vollständig zu vermeiden! Sofern Sie noch derartige Dienste betreiben, statten Sie diese bitte umgehend mit ordentlichen Zertifikaten aus oder kontaktieren Sie das Rechenzentrum unter pki@hs-schmalkalden.de, falls Ihnen die dazu nötigen Fachkenntnisse fehlen!

Automatische Ausstellung und Einrichtung über ACME [EMPFOHLEN]

Mithilfe eines ACME-Clients können Serverzertifikate komfortabel unbeaufsichtigt automatisch beantragt, abgeholt, installiert und erneuert werden. Dies reduziert den Betreuungsaufwand und Fehleranfälligkeit des Endsystems enorm, da die Ersteinrichtung von Zertifikaten vereinfacht wird und anschließend auch kein regelmäßiger, manueller Eingriff mehr nötig ist.

Um ACME an der HSM verwenden zu können, benötigen Sie:

  1. Ihre Key-ID (KID) / Account-ID
  2. Ihren HMAC-Key
  3. Die URL des ACME-Endpunktes vom Anbieter Sectigo: https://acme.sectigo.com/v2/GEANTOV
  4. Es werden keine extern erreichbaren Ports benötigt!
Eine Key-ID und den dazugehörigen HMAC-Key erhalten Sie von der PKI-Administration, nachdem Sie einen Antrag auf Ausgabe eines ACME-Accounts aus Alfresco ausgefüllt an pki@hs-schmalkalden.de gesendet oder persönlich im Rechenzentrum abgegen. Den Antrag auf Änderung eines ACME-Accounts finden Sie ebenfalls in Alfresco unter Dokumentenservice / Verwaltung und zentrale Einrichtungen / Rechenzentrum / Software / Nutzungsvereinbarung / ACME.

Linux / Unix: acme.sh

Für Linux- und Unix-basierte Systeme wird als ACME-Client acme.sh vom Rechenzentrum empfohlen und unterstützt, da der von Sectigo vorgeschlagene certbot viele Abhängigkeiten (snap, systemd, …) verlangt und sich daher ggf. auf älteren Systemen nicht nutzen lässt. acme.sh setzt für die Nutzung mit Sectigo lediglich sh und cron voraus. Grundsätzlich können aber alle ACME-Clients genutzt werden, die External Account Binding (EAB) unterstützen. Diese Anleitung erfolgt daher am Beispiel von acme.sh. Alle Befehle werden auf dem Endsystem eingegeben:

  1. acme.sh automatisch installieren: curl https://get.acme.sh | sh oder wget -O - https://get.acme.sh | sh (Die manuelle Installation ist unten dokumentiert)
  2. acme.sh-Alias aktualisieren/setzen: Erneut einloggen oder .profile bzw. .bashrc (Je nach Distribution) neuladen: . ~/.profile oder . ~/.bashrc
  3. Standard-CA auf Sectigo setzen: acme.sh --set-default-ca --server acme.sectigo.com/v2/GEANTOV (Falls bei der Installation eine Warnung bzgl. des Pakets socat angezeigt wird, kann diese ignoriert werden, da dieses nur relevant für den in dieser Anleitung nicht verwendeten Standalone-Modus ist.)
  4. ACME-Account registrieren: acme.sh --register-account --eab-kid _EIGENE_KEY_ID_ --eab-hmac-key _EIGENER_HMAC_KEY_ (Dieser Schritt kann einige Sekunden dauern und evtl. beim ersten Versuch fehlschlagen)
  5. Zertifikat ausstellen lassen: acme.sh --issue -d _EIGENE_DOMAIN_ -w /dev/null (Auch dieser Schritt kann dauern, der Webroot-Modus wird hierbei als Dummy mit /dev/null genutzt, da Sectigo von der HSM keine Challenge verlangt)
  6. Zertifikat installieren: acme.sh -i -d _EIGENE_DOMAIN_ --cert-file _ABSOLUTER_PFAD_ZUM_ZERTIFIKAT_ --key-file _ABSOLUTER_PFAD_ZUM_PRIVATE_KEY_ --reloadcmd "_BEFEHL_ZUM_NEUSTART_DES_DIENSTES_"

Die eingegebenen Parameter werden standardmäßig in ~/.acme.sh gespeichert. Die automatische Installation richtet außerdem einen Cronjob ein, welcher regelmäßig acme.sh --cron aufruft. Dies liest die gespeicherten Parameter ein, um das Zertifikat bei Bedarf automatisch zu erneuern und zu installieren.

Beispiel

  • Key-ID: GFYlXahAbkl9aLbqmq8icf
  • HMAC-Key: aJWvKJMVTzd1gQfSMbEhLKAKq5xmFI9WCPkM2u24M6IaVaR7dbzSRmXFRPuccdeAPEslOeBIswakMPiaPeOibB
  • ACME-URL: acme.sectigo.com/v2/GEANTOV
  • Domain: webserver1.hs-schmalkalden.de
  • Servertyp: Apache
  • System: Ubuntu
  • Zertifikatspfad: /etc/ssl/certs/webserver1.pem
  • Schlüsselpfad: /etc/ssl/private/webserver1.key
beispiel.sh
curl https://get.acme.sh | sh
. ~/.profile
acme.sh --set-default-ca --server acme.sectigo.com/v2/GEANTOV
acme.sh --register-account --eab-kid GFYlXahAbkl9aLbqmq8icf --eab-hmac-key aJWvKJMVTzd1gQfSMbEhLKAKq5xmFI9WCPkM2u24M6IaVaR7dbzSRmXFRPuccdeAPEslOeBIswakMPiaPeOibB
acme.sh --issue -d webserver1.hs-schmalkalden.de -w /dev/null
acme.sh -i -d webserver1.hs-schmalkalden.de --cert-file /etc/ssl/certs/webserver1.pem --key-file /etc/ssl/private/webserver1.key --reloadcmd "systemctl reload apache2"

Erweiterte Verwendungen

Manuelle Installation

Die automatische Online-Installation legt den für die spätere Automatisierung benötigten Cronjob und einen Alias im Profil (~/.bashrc, ~/.profile o.Ä.) automatisch an. Möchte man dies nicht und acme.sh manuell einrichten, kann auch nur das Archiv heruntergeladen und entpackt werden. Anschließend kann die acme.sh-Skriptdatei bspw. mit einem Symlink in /sbin verknüpft oder über ihren Pfad aufgerufen werden. Der Aufruf acme.sh --cron zur automatischen Erneuerung muss ebenfalls manuell eingerichtet werden.

Es scheint aktuell einen Bug zu geben, der dafür sorgt, dass der Standard-Konfigurationsordner von acme.sh (~/.acme.sh) mit --set-default-ca nicht angelegt wird. Es erscheint aber trotzdem eine Erfolgsmeldung!? Dieses Verzeichnis muss bei manueller Installation daher händisch vor dem Setzen der CA erstellt werden: mkdir ~/.acme.sh
acme.sh --set-default-ca --server acme.sectigo.com/v2/GEANTOV
 
touch: cannot touch '/root/.acme.sh/account.conf': No such file or directory
./acme.sh-3.0.7/acme.sh: 2295: cannot open /root/.acme.sh/account.conf: No such file
grep: /root/.acme.sh/account.conf: No such file or directory
grep: /root/.acme.sh/account.conf: No such file or directory
./acme.sh-3.0.7/acme.sh: 2322: cannot create /root/.acme.sh/account.conf: Directory nonexistent
grep: /root/.acme.sh/account.conf: No such file or directory
[Wed Apr 17 14:51:01 UTC 2024] Changed default CA to: acme.sectigo.com/v2/GEANTOV
Zusätzliches Zusenden per E-Mail

Bei der automatischen Installation von acme.sh, beim Registrieren des ACME-Accounts oder beim Ausstellen des ersten Zertifikates kann eine E-Mail-Adresse angegeben werden, um beim Ausstellen und Erneuern das Zertifikat zusätzlich per E-Mail zu senden. Dazu müssen die Befehle folgendermaßen modifiziert werden:

  1. Automatische Installation: -s email=m.mustermann@hs-sm.de anhängen
  2. ACME-Accountregistrierung oder Zertifikatsausstellung: -m m.mustermann@hs-sm.de anhängen
Subdomain-, Wildcard- & Multidomain-Zertifikate

Grundsätzlich können ACME-Accounts für ihre zugewiesenen Domains auch Zertifikate für Subdomains beliebiger Tiefe inkl. Wildcard ausstellen lassen. Ein ACME-Account, dem bspw. dezernat42.hs-schmalkalden.de zugewiesen wurde, kann auch Zertifikate für ftp.dezernat42.hs-schmalkalden.de, foo.bar.dezernat42.hs-schmalkalden.de oder *.dezernat42.hs-schmalkalden.de anfordern.

Um Multidomain-Zertifikate ausstellen zu lassen, genügt es, den Domain-Parameter -d mehrfach beim Aufruf zu verwenden. Zu beachten ist, dass das erzeugte Zertifikat lokal auf dem Endsystem unter der ersten Domain gespeichert wird und bei der Installation auch nur diese Domain angegeben werden muss.

In Kombination bedeutet dies, dass der Befehl acme.sh --issue -d dezernat42.hs-schmalkalden.de -d *.dezernat42.hs-schmalkalden.de -w /dev/null ein Multidomain-Zertifikat erzeugt, welches für die Hauptdomain und alle seine Subdomains gültig ist.

Zertifikatsinstallation mit CA-Zertifikat oder Fullchain

Beim Installationbefehl können als Pfadangaben neben dem Zertifikat und dem Schlüssel selber außerdem noch das CA-Zertifikat und/oder die komplette Kette angegeben werden:

  1. CA-Zertifikat: acme.sh -i -d _DOMAIN_ --cert-file _ABSOLUTER_PFAD_ZUM_ZERTIFIKAT_ --key-file _ABSOLUTER_PFAD_ZUM_PRIVATE_KEY_ --reloadcmd "_BEFEHL_ZUM_NEUSTART_DES_DIENSTES_" --ca-file _ABSOLUTER_PFAD_ZUM_CA-ZERTIFIKAT_
  2. Fullchain (Nötig bei nginx): acme.sh -i -d _DOMAIN_ --cert-file _ABSOLUTER_PFAD_ZUM_ZERTIFIKAT_ --key-file _ABSOLUTER_PFAD_ZUM_PRIVATE_KEY_ --reloadcmd "_BEFEHL_ZUM_NEUSTART_DES_DIENSTES_" --fullchain-file _ABSOLUTER_PFAD_ZUR_FULLCHAIN_

Windows: win-acme

Für Windows-Systeme wird als ACME-Client win-acme (Github) vom Rechenzentrum empfohlen und unterstützt. Mithilfe von Cygwin kann acme.sh lt. seiner Dokumentation zwar ebenfalls unter Windows genutzt werden, win-acme liefert allerdings einige nützliche PowerShell-Skripte mit, welche die Zertifikatsinstallation vereinfachen.

Beispiel:

  • Key-ID: GFYlXahAbkl9aLbqmq8icf
  • HMAC-Key: aJWvKJMVTzd1gQfSMbEhLKAKq5xmFI9WCPkM2u24M6IaVaR7dbzSRmXFRPuccdeAPEslOeBIswakMPiaPeOibB
  • ACME-URL: acme.sectigo.com/v2/GEANTOV
  • Domain: rdpserver.bereich.hs-schmalkalden.de
  • Servertyp: RDP-Dienst (z.B. bei Terminalserver oder VM)
  • System: Windows Server 2019

Folgende Schritte sind für die Einrichtung von win-acme zur Ausstellung von Zertifikaten notwendig:

  1. win-acme auf dem Endsystem herunterladen und entpacken: https://github.com/win-acme/win-acme/releases/latest oder Download-Bereich auf https://www.win-acme.com
  2. Das entpackte Verzeichnis sollte zuerst in seinen korrekten Zielpfad (bspw. C:\Program Files) verschoben werden, da bei der Einrichtung eine geplante Aufgabe erstellt wird, die anschließend win-acme unter seinem aktuellen Pfad aufruft. Eine nachträgliche Verschiebung des Verzeichnisses erfordert eine manuelle Korrektur der geplanten Aufgabe!
  3. Anschließend muss win-acme über wacs.exe einmal kurz interaktiv gestartet und mit Q direkt wieder geschlossen werden, damit seine Konfigurationsdatei settings.json erstellt wird.
  4. In der Datei settings.json (1) muss dann der Wert von Store/CertificateStore/PrivateKeyExportable (2) auf true (3) gesetzt werden:
  5. Zur eigentlichen Einrichtung muss jetzt folgende Befehlskette in der PowerShell oder CMD im Verzeichnis von wacs.exe ausgeführt werden.
    1. Da es sich beim Beispiel um den RDP-Dienst einer Windows-Maschine handelt, wird als Installationsskript die mitgelieferte Datei ImportRDListener.ps1 genutzt
    2. Skripte für weitere Dienste befinden sich derzeit noch in der Erprobung
    3. Es können auch eigene Skripte verwendet werden. (Siehe hier)
      beispiel.ps1
      .\wacs.exe `
        --source manual `
        --accepttos `
        --certificatestore My `
        --baseuri https://acme.sectigo.com/v2/GEANTOV/ `
        --eab-key-identifier GFYlXahAbkl9aLbqmq8icf `
        --eab-key aJWvKJMVTzd1gQfSMbEhLKAKq5xmFI9WCPkM2u24M6IaVaR7dbzSRmXFRPuccdeAPEslOeBIswakMPiaPeOibB `
        --host rdpserver.bereich.hs-schmalkalden.de[,weitere.domains,...] `
        --installation script `
        --script ".\Scripts\ImportRDListener.ps1" `
        --scriptparameters "{CertThumbprint}"

      ACHTUNG: Der Slash am Ende von --baseuri ist relevant!

  6. Dies sollte ein Zertifikat für die angegebene Domain ausgestellt und installiert sowie eine geplante Aufgabe zur automatischen Erneuerung angelegt haben.

Überprüfung / Weitere Informationen

  1. Zertifikat überprüfen: certlm.msc:
  2. Geplante Aufgabe überprüfen / ändern: taskschd.msc
  3. Logs und Einstellungen: C:\ProgramData\win-acme
  4. Weitere Installationsskripte / allgemeine Verwendung: hier, hier und hier

Erweiterte Verwendungen

Domain-Controller / Management-Server: Zertifikate für die RDP-Zugänge von verwalteten Maschinen ausstellen und verteilen

Hierzu wird vom Rechenzentrum folgendes PowerShell-Installationsskript zur Verfügung gestellt:

HSM_ImportRemoteRDListener.ps1
param(
    [Parameter(Position=0,Mandatory=$true)]
    [string]$cn,
    [Parameter(Position=1,Mandatory=$true)]
    [string]$thumbprint,
    [Parameter(Position=2,Mandatory=$true)]
    [string]$path,
    [Parameter(Position=3,Mandatory=$true)]
    [string]$pwd
)
 
$destPath = "Users\$env:username\tmp.pfx"
$destLocalPath = "C:\$destPath"
$destUNCPath = "\\$cn\C$\$destPath"
 
Copy "$path" "$destUNCPath"
 
wmic /node:`"$cn`" process call create "powershell /c Import-PfxCertificate -FilePath '$destLocalPath' -CertStoreLocation Cert:\LocalMachine\My -Password ( ConvertTo-SecureString -String '$pwd' -Force -AsPlainText ); Remove-Item '$destLocalPath'"
 
Start-Sleep 2
 
wmic /node:`"$cn`" /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="$thumbprint"

Erläuterung:

  1. Zunächst wird die ausgestellte PFX-Zertifikatsdatei temporär über die administrative Freigabe von Laufwerk C im Home-Verzeichnis des ausführenden Nutzers auf der Zielmaschiene platziert.
  2. Anschließend wird das Zertifikat in den entfernten Zertifikatsspeicher importiert und die temporäre Datei gelöscht.
  3. Es wird zwischenzeitlich 2 Sekunden gewartet, da WMIC-Aufrufe asynchron ausgeführt werden.
  4. Abschließend wird das neue Zertifikat über seinen Fingerprint für den RDP-Dienst eingerichtet.

Der Aufruf von wacs.exe muss mit dem Skript beispielhaft in etwa folgendermaßen aussehen:

beispiel.ps1
.\wacs.exe `
  --source manual `
  --accepttos `
  --baseuri https://acme.sectigo.com/v2/GEANTOV/ `
  --eab-key-identifier GFYlXahAbkl9aLbqmq8icf `
  --eab-key aJWvKJMVTzd1gQfSMbEhLKAKq5xmFI9WCPkM2u24M6IaVaR7dbzSRmXFRPuccdeAPEslOeBIswakMPiaPeOibB `
  --host fqdn.ihres.rdpservers.hs-schmalkalden.de `
  --installation script `
  --script ".\Pfad\Zum\HSM_ImportRemoteRDListener.ps1" `
  --scriptparameters "'{CertCommonName}' '{CertThumbprint}' '{CacheFile}' '{CachePassword}'"

Beachten Sie, dass im Gegensatz zum obrigen Beispiel der Parameter --certificatestore nicht vorhanden ist (Ansonsten wird das Zertifikat auch im Zertifikatsspeicher der ausstellenden lokalen Maschine abgelegt) und 4 anstatt nur einem Scriptparameter übergeben werden.

Proxmox

Proxmox bietet einen eingebauten ACME-Client, welcher ab Version 8.2 auch offiziell benutzerdefinierte Dienstanbieter unterstützt. Für Proxmox-Instanzen mit Version < 8 kann acme.sh anhand der Linux-Anleitung genutzt werden, da acme.sh grundsätzlich auch für Proxmox funktioniert. Proxmox-Instanzen mit Version >= 8, aber < 8.2 können einfach über Upgrade auf Version >= 8.2 gebracht werden, um dieses Feature nutzen zu können. Folgende Schritte sind für die Einrichtung des PVE-ACME-Clients für Sectigo nötig:

  1. Wählen Sie in Ihrem Proxmox-Knoten Ihr Datacenter bzw. Rechenzentrum (1) aus und scrollen Sie dort im Menü nach unten bis zu SDN / ACME (2). (SDN müssen Sie ggf. ausklappen). Klicken Sie dort unter Accounts auf den Button Add (1)
    1. Es öffnet sich ein Dialog Register Account, in dem Sie Ihren Account zuerst benennen sollten (1). Dies ist grundsätzlich optional, erleichtert aber später die Identifikation des Accounts insbesondere, wenn Sie mehrere Accounts konfigurieren. Im Beispiel wurde der Account Sectigo genannt.
    2. Tragen Sie eine E-Mail-Adresse ein, die für Benachrichtigungen bspw. bei Zertifikatsausstellungen im Zusammenhang mit diesem Account dient (2).
    3. Wählen Sie Custom (Eigener Dienstanbieter) bei ACME Directory (3)
    4. Als URL tragen Sie https://acme.sectigo.com/v2/GEANTOV ein (4) und laden Sectigos Nutzungsbedingungen / Terms of Service (TOS), indem Sie auf Query URL klicken (5).
    5. Lesen und akzeptieren (6) Sie diese Nutzungsbedingungen.
    6. Fügen Sie Ihre Account-Zugangsdaten KID bei EAB Key ID (7) und Ihren HMAC-Key bei EAB Key (8) ein.
    7. Bestätigen Sie den Dialog mit dem Button Register (9)
  2. Anschließend wird Ihnen ein Fenster mit dem Prozessstatus angezeigt. Dieses Fenster können Sie bei Abschluss oben rechts schließen (1).
    1. Nun wählen Sie den Knoten aus, dem Sie diesen Account zuweisen wollen (1).
    2. Navigieren Sie dort zum Menü System / Certifiactes (2). (System müssen Sie ggf. ausklappen)
    3. Wählen Sie den soeben erstellten Account bei Using Account aus (3) und bestätigen Sie Ihre Auswahl mit Apply (4).
    4. Fügen Sie nun mit dem Button Add eine Domain hinzu, für die dieser Account ein Zertifikat ausstellen soll (5).
  3. Es öffnet sich der Dialog Create: Domain.
    1. Belassen Sie dort den Challenge Type bei HTTP (1).
    2. Fügen Sie den FQDN Ihres Knotens bei Domain hinzu (2).
    3. Schließen Sie den Dialog mit dem Button Create ab (3).
    1. Wie Sie jetzt zur Bestätigung sehen können sollten, wurde die Domain erfolgreich hinzugefügt (1).
    2. Sie können weitere Domains hinzufügen, indem Sie über den Button Add den vorherigen Schritt beliebig oft wiederholen (2).
    3. Wenn Sie alle gewünschten Domains hinzugefügt haben, beantragen Sie Ihre Zertifikate erstmalig manuell mit dem Button Order Certificates Now. Später wird lt. PVE-Admin-Guide Abschnitt 3.12.7: Automatic renewal of ACME certificates über den Dienst pve-daily-update das Zertifikat bei Bedarf automatisch erneuert.
    4. Nach Abschluss des Ausstellungsprozesses wird das Web-GUI neugestartet.
  4. Sie sollten nun zur Bestätigung Ihr ausgestelltes Zertifikat in der darüberliegenden Übersicht unter der Datei pveproxy-ssl.pem finden.
  5. Vergessen Sie als Abschluss nicht, etwaige Zertifikatsausnahmen zu entfernen!

Manuelle Ausstellung über Webformular

Das Webformular für den Antrag befindet sich unter https://cert-manager.com/customer/DFN/ssl/HSM.
Falls Sie planen, den von Ihnen betreuten Dienst permanent mit einem Zertifikat auszustatten, sollten Sie die automatische Ausstellung und Einrichtung über ACME in Erwägung ziehen, um Ihren administrativen Aufwand zu reduzieren und das Risiko von abgelaufenen Zertifikaten zu vermeiden.
Wenn Sie über dieses Webformular ein Zertifikat für eine Domain ausstellen lassen möchten, welche keine Subdomain Ihres Bereichs ist, muss Ihr Enrollment-Account vorab dafür freigeschaltet werden. Kontaktieren Sie hierfür bitte das Rechenzentrum unter pki@hs-schmalkalden.de! Anderenfalls bricht der Prozess beim Absenden des Formulars mit der Fehlermeldung This domain '<hostname>.hs-schmalkalden.de' is not available for enrollment. Please contact administrator. ab. Als Beispiel ist der Enrollment-Account Rechenzentrum berechtigt, Zertifikate für den FQDN webserver.rz.hs-schmalkalden.de aber nicht für webserver.hs-schmalkalden.de auszustellen.
  1. Falls Sie berechtigt sind, für andere Verwaltungsbereiche Serverzertifikate zu beantragen, müssen Sie als ersten Schritt im Webformular den Account des gewünschten Bereichs (1) auswählen und mit Next bestätigen (2). Sollten Sie nur zur Nutzung eines einzelnen Accounts berechtigt sein, wird dieser automatisch ausgewählt und diese Rückfrage übersprungen. Kontaktieren Sie bitte das Rechenzentrum über pki@hs-schmalkalden.de, falls Ihnen ein benötigter Account nicht zur Auswahl steht.
  2. Sie sollten sich nun im eigentlichen Formular befinden:
    1. Dort müssen Sie das Profil (Certificate Profile) (1) für Ihr Zertifikat definieren, welches im Wesentlichen über seine Eigenschaften und weitere Auswahlmöglichkeiten bestimmt. I.d.R. ist aber das Profil OV Multi-Domain fest vorgegeben, da es am flexibelsten ist.
    2. Die Gültigkeit des Zertifikats (Certificate Term) ist durch Sectico immer auf 1 Jahr festgelegt (2).
    3. Als Schlüsseltyp (Key Type) sollten Sie mindestens RSA - 4096 oder EC - P-256 auswählen (3), um zukunftssicher zu sein. Dies bestimmt vor allem die Resistenz der Verschlüsselung gegen Brute-Force-Angriffe.
    4. Bei Common Name (4) tragen Sie den vollständigen Domainnamen (FQDN) Ihres Dienstes ein, der mit einem Zertifikat ausgestattet werden soll.
    5. Falls Ihr Dienst über mehrere FQDNs erreichbar ist, können diese für die Profile OV Multi-Domain und Unified Communications Certificate als Subject Alternative Names hinzugefügt werden (5).
    6. Wenn Ihr Zertifikat Wildcard-Domains beinhalten soll, können Sie diese mit einem * am Anfang vorzugsweise bei Subject Alternative Names oder als Common Name angeben. Eine Wildcard gilt für genau einen Domain-Level! *.bereich.hs-schmalkalden.de ist daher bspw. für dienst-a.bereich.hs-schmalkalden.de oder dienst-b.bereich.hs-schmalkalden.de, aber nicht für dienst-c.labor.bereich.hs-schmalkalden.de oder bereich.hs-schmalkalden.de gültig! Es empfiehlt sich daher meist, eine Wildcard-Domain immer zusammen mit ihrer Über-Domain zu beantragen. Beachten Sie, dass Ihr Verwaltungsbereich ggf. (noch) nicht zur Ausstellung von Zertifikaten mit Wildcard berechtigt ist. Kontaktieren Sie daher bitte zur Freischaltung formlos das Rechenzentrum mit Ihrer Wunschdomain unter pki@hs-schmalkalden.de.
    7. Wenn Sie möchten, dass das ausgestellte Zertifikat außerdem einer oder mehreren weiteren (externen) Person(en) (bspw. systembetreuenden Studierenden) gesendet wird, können Sie ihre E-Mail-Adresse(n) bei External Requesters hinterlegen (6).
    8. Das Kommentarfeld (Comments) (7) ist optional und dient nur zu Dokumentations- bzw. zu Beschreibungszwecken, falls für den aktuell ausgewählten Account Zertifikate ausschließlich manuell von Mitarbeitern des Rechenzentrums genehmigt werden.
    9. Zur Prozessvereinfachung empfiehlt es sich Auto Renew zu aktivieren. Dies hat zur Folge, dass automatisch ein Nachfolgezertifikat beantragt und Ihnen nach der Genehmigung per E-Mail gesendet wird, sobald das Ablaufdatum des Zertifikats nur noch die darunter definierte Anzahl an Tagen (9) entfernt ist.
    10. Bestätigen Sie Ihren Antrag mit Submit (10). Nun sollten Sie innerhalb weniger Augenblicke eine Bestätigungs-Mail erhalten. Diese E-Mail enthält nicht den privaten Schlüssel! Der Download dieses privaten Schlüssels erfolgt in Kürze in Ihrem Browser.
  3. Befolgen Sie daher den anschließenden Hinweis und schließen Sie den aktuellen Browser-Tab nicht!
    1. Der Key protection algorithm ist an dieser Stelle nicht besonders relevant, da Sie bei der manuellen Einrichtung i.d.R. die .p12-Datei sowieso in ein anderes Format konvertieren müssen. Wählen Sie daher bevorzugt den neueren, sichereren Standard Secure AES256-SHA256 aus (1).
    2. Legen Sie ein sicheres Passwort fest (2), das den privaten Schlüssel beim anschließenden Download verschlüsselt. Bedenken Sie, dass Sie dieses Passwort später beim Einrichten des Zertifikats brauchen werden. Nutzen Sie optimalerweise einen Passwort-Manager (bspw. KeePass), um sich das Passwort zu notieren!
    3. Schließen Sie den Dialog mit dem Button Download ab (3).
  4. Befolgen Sie erneut den Hinweis und schließen Sie nicht den aktuellen Browser-Tab! In Kürze sollten Sie zum Download des beantragten Zertifikats inkl. seines privaten Schlüssels im PKCS#12-Format aufgefordert werden. Je nach Ihren persönlichen Browser-Einstellungen erfolgt dieser Download ggf. automatisch ohne Dialog. Prüfen Sie daher Ihr Download-Verzeichnis, falls Sie die ausgestellte Zertifikatsdatei vermissen.

Manuelle Einrichtung

Formatkonvertierung von PKCS#12 nach PEM mit OpenSSL

Ein großer Anteil an Serversoftware (u.A. Nginx, Apache, …) erwartet TLS-Zertifiakte im PEM- und nicht im PKCS#12-Format. Die über das Webformular im PKCS#12-Format ausgestellten Zertifikate müssen daher vorab konvertiert werden, um für diese Servertypen verwendbar zu sein. Hierfür bietet sich das OpenSSL-Toolkit an.

  • Ausgangsbeispieldatei: cert.p12
  • Fett markierte Ausgaben benötigt man wahrscheinlich am häufigsten
  • Der Ausgabedateiname ist unterstrichen
  • Alle Dateinamen sind beispielhafte Empfehlungen
Ausgabe Befehl
Nur Zertifikat openssl pkcs12 -out cert.pem -nokeys -clcerts -in cert.p12
Nur privater Schlüssel mit Passwort openssl pkcs12 -out cert.enc.key -nocerts -in cert.p12
Nur privater Schlüssel ohne Passwort openssl pkcs12 -out cert.key -nocerts -nodes -in cert.p12
Zertifikat und privater Schlüssel mit Passwort in einer Datei openssl pkcs12 -out cert+key.enc.pem -clcerts -in cert.p12
Zertifikat und privater Schlüssel ohne Passwort in einer Datei openssl pkcs12 -out cert+key.pem -clcerts -nodes -in cert.p12
Nur CA-Zertifikate / Zertifikatskette openssl pkcs12 -out chain.pem -nokeys -cacerts -in cert.p12
Zertifikat und CA-Zertifikate / komplette Zertifikatskette openssl pkcs12 -out fullchain.pem -nokeys -in cert.p12
Alles mit Passwort in einer Datei openssl pkcs12 -out all.enc.pem -in cert.p12
Alles ohne Passwort in einer Datei openssl pkcs12 -out all.pem -nodes -in cert.p12

Windows

Dieser Abschnitt ist in Arbeit! (ToDo)

Apache

Dieser Abschnitt ist in Arbeit! (ToDo)

Nginx

Dieser Abschnitt ist in Arbeit! (ToDo)

Proxmox

In der Konsole [EMPFOHLEN]

  1. Laden Sie Ihre .p12-Zertifikatsdatei (bspw. mit scp oder SFTP-Browser) auf Ihren Proxmox-Knoten nach /etc/pve/local hoch: scp _LOKALER_PFAD_IHRES_ZERTIFIKATS_.p12 root@_IHR_HOST_:/etc/pve/local/
  2. Verbinden Sie sich über SSH mit dem Knoten oder melden Sie sich lokal an.
  3. Navigieren Sie nach /etc/pve/local: cd /etc/pve/local
  4. Exportieren Sie Ihr Zertifikat ins PEM-Format nach pveproxy-ssl.pem: openssl pkcs12 -out pveproxy-ssl.pem -nokeys -clcerts -in *.p12
  5. Exportieren Sie den privaten Schlüssel Ihres Zertifikats ins PEM-Format ohne Passwort nach pveproxy-ssl.key: openssl pkcs12 -out pveproxy-ssl.key -nocerts -nodes -in *.p12
  6. Starten Sie den Dienst pveproxy neu: systemctl restart pveproxy
  7. Löschen Sie ggf. die hochgeladene .p12-Datei: rm *.p12

Im Web GUI

Da im Vergleich zur Einrichtung über die Konsole noch zusätzliche Schritte nötig sind, der Prozess aber ansonsten komplett identisch ist, wird dieser Einrichtungsweg nicht empfohlen.
  1. Exportieren Sie zuerst von Ihrer .p12-Zertifikatsdatei das Zertifikat und den zugehörigen privaten Schlüssel ohne Passwort jeweils im PEM-Format. Dies ist nahezu mit der Einrichtung in der Konsole identisch, mit Ausnahme des letzten Schritts.
  2. Navigieren Sie im Proxmox Web GUI bei den Einstellungen Ihres Knotens (1) zu System/Certificates (2) und klicken Sie dort auf Upload Custom Certificate (3).
  3. Fügen Sie im Folgedialog als Private Key (1) den zuvor exportierten privaten Schlüssel und als Certifiate Chain (2) Ihr Zertifikat ein. Sie können entweder die Dateiinhalte in das entsprechende Textfeld einfügen (3) oder die Dateien hochladen (4). Im Gegensatz zur Einrichtung über die Konsole müssen Sie in beiden Feldern abschließend noch einige Zusatzzeilen ("Bag Attributes") oberhalb der Zeilen —–BEGIN … entfernen, die zur Ablehnung Ihrer Eingaben führen würden (5). Löschen Sie keinesfalls andere Zeilen! Bestätigen Sie zum Schluss den Dialog mit Upload (6).
  4. Nun sollte folgende Bestätigungsmeldung API server will be restarted to use new certificates, please reload web-interface! erscheinen. Befolgen Sie diese und laden Sie den aktuellen Browser-Tab neu:
  5. Der Zugriff auf das PVE Web GUI über HTTPS sollte ab jetzt ohne Zertifikatsausnahme möglich sein. Entfernen Sie daher etwaige Ausnahmen!
  6. Sie können die Zertifikatseinrichtung abschließend unter System/Certificates (1) in der Übersicht prüfen (2):
zertifikate/pki/server-zertifikate.txt · Zuletzt geändert: 2024/09/16 15:51 von Conny Marcus Rasch

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki