Inhaltsverzeichnis
TLS- / SSL- / Serverzertifikate
Zweck: Transportverschlüsselung (TLS/SSL) für die Kommunikation mit HTTPS, FTPS, RDP, SMTPS, LDAPS, usw. zu Servern
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:
- Ihre Key-ID (KID) / Account-ID (22 Zeichen)
- Ihren HMAC-Key (86 Zeichen)
- Die URL des ACME-Endpunktes vom Anbieter Sectigo: https://acme.sectigo.com/v2/GEANTOV
- Es werden keine extern erreichbaren Ports benötigt!
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:
- acme.sh automatisch installieren:
curl https://get.acme.sh | sh
oderwget -O - https://get.acme.sh | sh
(Die manuelle Installation ist unten dokumentiert) - acme.sh-Alias aktualisieren/setzen: Erneut einloggen oder
.profile
bzw..bashrc
(Je nach Distribution) neuladen:. ~/.profile
oder. ~/.bashrc
- Standard-CA auf Sectigo setzen:
acme.sh --set-default-ca --server acme.sectigo.com/v2/GEANTOV
(Falls bei der Installation eine Warnung bzgl. des Paketssocat
angezeigt wird, kann diese ignoriert werden, da dieses nur relevant für den in dieser Anleitung nicht verwendeten Standalone-Modus ist.) - 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) - 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) - 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.
--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:
- Automatische Installation:
-s email=m.mustermann@hs-sm.de
anhängen - 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:
- 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_
- 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:
win-acme
auf dem Endsystem herunterladen und entpacken: https://github.com/win-acme/win-acme/releases/latest oderDownload
-Bereich auf https://www.win-acme.com- 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ßendwin-acme
unter seinem aktuellen Pfad aufruft. Eine nachträgliche Verschiebung des Verzeichnisses erfordert eine manuelle Korrektur der geplanten Aufgabe! - Anschließend muss
win-acme
überwacs.exe
einmal kurz interaktiv gestartet und mitQ
direkt wieder geschlossen werden, damit seine Konfigurationsdateisettings.json
erstellt wird. - Zur eigentlichen Einrichtung muss jetzt folgende Befehlskette in der PowerShell oder CMD im Verzeichnis von
wacs.exe
ausgeführt werden.- Da es sich beim Beispiel um den RDP-Dienst einer Windows-Maschine handelt, wird als Installationsskript die mitgelieferte Datei
ImportRDListener.ps1
genutzt - Skripte für weitere Dienste befinden sich derzeit noch in der Erprobung
- 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}"
- 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
- Logs und Einstellungen:
C:\ProgramData\win-acme
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:
- 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.
- Anschließend wird das Zertifikat in den entfernten Zertifikatsspeicher importiert und die temporäre Datei gelöscht.
- Es wird zwischenzeitlich 2 Sekunden gewartet, da WMIC-Aufrufe asynchron ausgeführt werden.
- 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:
- 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 AccountSectigo
genannt. - Tragen Sie eine E-Mail-Adresse ein, die für Benachrichtigungen bspw. bei Zertifikatsausstellungen im Zusammenhang mit diesem Account dient (2).
- Wählen Sie
Custom
(Eigener Dienstanbieter) beiACME Directory
(3) - Als
URL
tragen Siehttps://acme.sectigo.com/v2/GEANTOV
ein (4) und laden Sectigos Nutzungsbedingungen / Terms of Service (TOS), indem Sie aufQuery URL
klicken (5). - Lesen und akzeptieren (6) Sie diese Nutzungsbedingungen.
- Fügen Sie Ihre Account-Zugangsdaten
KID
beiEAB Key ID
(7) und IhrenHMAC-Key
beiEAB Key
(8) ein.
- Nun wählen Sie den Knoten aus, dem Sie diesen Account zuweisen wollen (1).
- Navigieren Sie dort zum Menü
System / Certifiactes
(2). (System müssen Sie ggf. ausklappen) - Wählen Sie den soeben erstellten Account bei
Using Account
aus (3) und bestätigen Sie Ihre Auswahl mitApply
(4).
- Es öffnet sich der Dialog
Create: Domain
.- Belassen Sie dort den
Challenge Type
beiHTTP
(1). - Fügen Sie den
FQDN
Ihres Knotens beiDomain
hinzu (2).
- Wie Sie jetzt zur Bestätigung sehen können sollten, wurde die Domain erfolgreich hinzugefügt (1).
- Sie können weitere Domains hinzufügen, indem Sie über den Button
Add
den vorherigen Schritt beliebig oft wiederholen (2). - 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 Dienstpve-daily-update
das Zertifikat bei Bedarf automatisch erneuert.
- Vergessen Sie als Abschluss nicht, etwaige Zertifikatsausnahmen zu entfernen!
Manuelle Ausstellung über Webformular
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.
- 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. - Sie sollten sich nun im eigentlichen Formular befinden:
- 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 ProfilOV Multi-Domain
fest vorgegeben, da es am flexibelsten ist. - Die
Gültigkeit
des Zertifikats (Certificate Term) ist durch Sectico immer auf 1 Jahr festgelegt (2). - Als
Schlüsseltyp
(Key Type) sollten Sie mindestensRSA - 4096
oderEC - P-256
auswählen (3), um zukunftssicher zu sein. Dies bestimmt vor allem die Resistenz der Verschlüsselung gegen Brute-Force-Angriffe. - Bei
Common Name
(4) tragen Sie den vollständigen Domainnamen (FQDN) Ihres Dienstes ein, der mit einem Zertifikat ausgestattet werden soll. - Falls Ihr Dienst über mehrere FQDNs erreichbar ist, können diese für die Profile
OV Multi-Domain
undUnified Communications Certificate
alsSubject Alternative Names
hinzugefügt werden (5). - Wenn Ihr Zertifikat Wildcard-Domains beinhalten soll, können Sie diese mit einem
*
am Anfang vorzugsweise beiSubject Alternative Names
oder alsCommon Name
angeben. Eine Wildcard gilt für genau einen Domain-Level!*.bereich.hs-schmalkalden.de
ist daher bspw. fürdienst-a.bereich.hs-schmalkalden.de
oderdienst-b.bereich.hs-schmalkalden.de
, aber nicht fürdienst-c.labor.bereich.hs-schmalkalden.de
oderbereich.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. - 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). - 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.
- 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.
- 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 StandardSecure AES256-SHA256
aus (1). - 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!
- 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
Apache
Nginx
Proxmox
Offizielle Dokumentation: https://pve.proxmox.com/wiki/Certificate_Management
In der Konsole [EMPFOHLEN]
- 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/
- Verbinden Sie sich über SSH mit dem Knoten oder melden Sie sich lokal an.
- Navigieren Sie nach
/etc/pve/local
:cd /etc/pve/local
- Exportieren Sie Ihr Zertifikat ins PEM-Format nach
pveproxy-ssl.pem
:openssl pkcs12 -out pveproxy-ssl.pem -nokeys -clcerts -in *.p12
- 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
- Starten Sie den Dienst
pveproxy
neu:systemctl restart pveproxy
- Löschen Sie ggf. die hochgeladene .p12-Datei:
rm *.p12
Im Web GUI
- 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.
- Fügen Sie im Folgedialog als
Private Key
(1) den zuvor exportierten privaten Schlüssel und alsCertifiate 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 mitUpload
(6). - Der Zugriff auf das PVE Web GUI über HTTPS sollte ab jetzt ohne Zertifikatsausnahme möglich sein. Entfernen Sie daher etwaige Ausnahmen!