7.4 KiB
Table of Contents
- SSL/TLS
- Windows TLS aktivieren
- Zertifikat-Dateien umwandeln, bündeln etc.
- Chained Certificate erstellen
- PFX erstellen aus Server-Zertifikat und Key
- Convert PKS12 (.pfx) to Base64
- Extract the private key from a PFX to a PEM file
- Removing the password from the private key
- Extract the certificate
- Extract the certificate chain (root and intermediate)
- Convert Base64 to DER (binary)
- Convert DER (binary) to Base64
- IIS (Windows)
- Nginx (Linux)
- Cacerts / Java
- Truststore
- Neues Zertifikat in cacerts einfügen
- Zertifikat aus cacerts exportieren
- Alle Einträge in cacerts auflisten
- Alter Eintrag in cacerts löschen
- Alias eines Keys im Keystore ändern
- Tomcat (unter Windows)
- Ruby (unter Windows)
- Weitere nützliche Befehle
SSL/TLS
Übersicht: https://www.sslmarket.ch/ssl/formate-von-ssl-zertifikaten-und-ihre
Windows TLS aktivieren
Unter Windows muss TLS 1.0, TLS 1.1 und TLS 1.2 aktiviert werden. Dies kann in den Internet Options vom Internet Explorer gemacht werden:
Zertifikat-Dateien umwandeln, bündeln etc.
Chained Certificate erstellen
Ein Chained Certificate enthält das Server Zertifikat sowie Intermediate-/Root-Zertifikate.
- Falls nur das Server-Zertifikat vorhanden ist, muss das Root- und Intermediate-Zertifikat separat aus dem Browser herunter geladen werden. Bei der Export-Möglichkeit sollte Base-64 codiert im X.509 Standard (.cer) gewählt werden. Die 3 Teile müssen dann wie im nächsten Punkt beschrieben in einer Datei zusammengefasst werden.
- Falls ein "Bundle" (Root- und Intermediate-Zertifikat) und ein Server-Zertifikat separat geliefert wird, muss dies in eine Datei zusammengefügt werden:
- Position: Server-Zertifikat
- Position: Intermediate Zertifikat
- Position: Root-Zertifikat.
Abspeichern als <FQDN>.chained.crt.
PFX erstellen aus Server-Zertifikat und Key
Um das Zertifikat in das gewünschte Format zu bekommen brauch man zuerst die 2 Basis-Dateien:
- Zertifikat ("pem", "cer", "crt" oder andere Dateiendung)
- Der Private Key (oft mit ".key" Dateiendung), welcher mit dem CSR erstellt wird und zu diesem Zertifikat gehört.
Um Intermediate und Root-Zertifikate mit in das PKCS12 aufzunehmen, bedarf es einen einfachen Tricks:
- Server-Zertifikat in PEM Format (Base64 encoded) abspeichern
- Private Key in PEM Format (Base64 encoded) abspeichern
- Server-Zertifikat in Editor öffnen
- Darunter Intermediate und Root Zertifikate einfügen (in dieser Reihenfolge)
- Wir haben nun ein Full Chained Certificate, das wir als .crt abspeichern.
Nun wir die gebündelte Datei (.crt) und der Privatekey (.key) mit openssl zu einer Datei zusammengefasst zu der .pfx (oder je nach gusto .p12) Datei.
openssl pkcs12 -export -in chained.crt -inkey privateekey.key -out output.pfx
Die erzeugte p12 Datei enthält jetzt den privaten Schlüssel und das Zertifikat. Der Inhalt wird mit einem Passwort geschützt, das beim Absetzen des Befehls abgefragt wird.
Zu einer bereits bestehenden PKCS12 Datei können die Intermediates mit folgendem Befehl hinzugefügt werden:
openssl pkcs12 -export -inkey (Ihr Privatekey).key -in (Ihr Zertifikat).crt -out (Zertifikats Name).p12 -chain -CApath /etc/ssl/certs
Convert PKS12 (.pfx) to Base64
Extract the private key from a PFX to a PEM file
openssl pkcs12 -in filename.pfx -nocerts -out key.pem # enter any temp passphrase
Removing the password from the private key
openssl rsa -in key.pem -out server.key # <- that is what we need for nginx
Extract the certificate
openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert_only.pem
As DER (binary), not PEM. Using PowerShell:
Get-PfxCertificate -FilePath filename.pfx | Export-Certificate -FilePath cert_only.cer -Type CERT
Extract the certificate chain (root and intermediate)
openssl pkcs12 -in 05-srvingesttst01.pfx -cacerts -nokeys -out cert.pem
Convert Base64 to DER (binary)
Used for cacerts, for example
openssl x509 -in cert.crt -outform der -out cert.der
# view:
openssl x509 -in cert.der -inform der -text -noout
Convert DER (binary) to Base64
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
# view:
openssl x509 -in cert.pem -text -noout
IIS (Windows)
- PFX Datei in IIS importieren
- altes Zertifikat entfernen
- Bindings prüfen und allenfalls anpassen
Nginx (Linux)
Die .key und *.chained.crt Dateien können wie hier beschrieben für die Konfiguration verwendet werden.
Cacerts / Java
Truststore
javax.net.ssl.trustStore, der Truststore für CA-Zertifikate.
Cacerts ist ein Truststore (vertraut den Zertifikaten). Der Default-Speicherort des cacerts ist jre/lib/security. Darin befinden sich die Root Zertifikate von den grössten Zertifizierungsstellen (ca. 104) Diesen Root Zertifikaten vertraut Java von Haus aus und alle anderen werden blockiert. Man kann hier weitere hinzufügen oder ein ganze neues cacerts bauen.
Java lehnt Zertifikate, die nicht im cacerts vorhanden sind aus Sicherheitsgründen ab. Ein Self Signed Certificate oder das Rootertifikat muss deshalb manuell hinterlegt werden. Ab diesem Moment "vertraut" Java diesem Zertifikat.
Neues Zertifikat in cacerts einfügen
keytool -importcert -trustcacerts -file /path/to/cert.pem -alias EinAliasName -keystore /path/to/cacerts -storepass changeit -noprompt
Ab Java 9 kann das PEM (base64 encoded) Zertifikat verwendet werden.
Bei Java < 9 sollte das Zertifikat im x509 DER Format vorliegen. Allenfalls ist eine Konvertierung nötig:
openssl x509 -outform der -in certificate.pem -out certificate.der
Zertifikat aus cacerts exportieren
keytool -export -storepass changeit -alias DerAliasName -keystore cacerts -file FQDNname.crt
Alle Einträge in cacerts auflisten
keytool -list -v -keystore "c:\...\cacerts" > cacerts_output.txt
Alter Eintrag in cacerts löschen
keytool -delete -alias aliasname -keystore ..\cacerts
Alias eines Keys im Keystore ändern
keytool -changealias -alias "your-very-very-long-alias" -destalias "new-alias" -keystore "/path/to/cacerts"
Tomcat (unter Windows)
Das Keystore-File von Tomcat beinhaltet das Serverzertifikat, die Chain of Trust (Root-/Intermediate Zertifikate), und den private Key. Tomcat verwendet JKS, PKCS11 or PKCS12 format keystores. Das JKS format ist Java's standard "Java KeyStore" Format. Das PKCS12 Format ist ein Internetstandard, und kann mit OpenSSL oder Microsoft's Key-Manager manipuliert werden.
Bei älteren Tomcat-Versionen (<8 ?) muss möglicherweise PFX in JKS umgewandelt werden:
Keytool -importkeystore -srckeystore server.pfx -srcstoretype pkcs12 -destkeystore tomcat.jks -deststoretype jks
Anschliessend in tomcat/conf/server.xml im von 443 oder 8443 die Angaben zu keystoreFile und keystorePass machen.
Zudem muss in den Tomcat Monitor Configurations im Tab „Java“ der Pfad zum Java Truststore (cacerts) hinzugefügt werden:
-Djavax.net.ssl.trustStore=D:\docuteam\apps\jdk\jre\lib\security\cacerts.
Ruby (unter Windows)
Damit Ruby Apps verschlüsselte Verbindungen über Self-Signed Certificates herstellen kann, muss das Root/Intermediate Zertifikat hinterlegt werden.
- Intermediate und Root Zertifikat separat abspeichern als Base-64.
- Dateiendung auf .pem anpassen, falls dies noch nicht der Fall ist.
- Die 2 Dateien im Ordner
...\Ruby2x-x64\ssl\certsablegen. - Das
c_rehash.rbSkript im selben Ordner aus CMD heraus ausführen.:D:\...\Ruby26-x64\ssl\certs>ruby c_rehash.rb - Ab Ruby 3.2.2 befinden sich die Zertifikate und
c_rehash.rbinD:\...\Ruby32-x64\bin\etc\ssl\certs
Weitere nützliche Befehle
Überprüfen, ob Key, CRT und CSR zusammen passen
Mit folgenden Befehlen kann überprüft werden, ob Key, CRT und CSR zusammen passen (muss 3x die gleiche Checksumme ergeben):
openssl rsa -noout -modulus -in irgendEinName.key.pem | openssl md5
openssl x509 -noout -modulus -in irgendEinName.crt.pem | openssl md5
openssl req -noout -modulus -in irgendEinName.csr | openssl md5
