Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
openssl [23/04/2025 - 16:55] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | openssl [23/04/2025 - 16:55] (aktuell) – ↷ Seitename wurde von openssl2 auf openssl geändert thommie_netzwissen.de | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== openssl für alle Tage ====== | ||
+ | |||
+ | ===== Schlüssel erzeugen ===== | ||
+ | |||
+ | < | ||
+ | openssl genrsa -aes256 -out dvsdnet.devoteam.de.key.pem | ||
+ | |||
+ | </ | ||
+ | |||
+ | Bei RSA Schlüsseln wird automatisch ein Passwort abgefragt. Das kann man in einem zweiten Schritt wieder entfernen: | ||
+ | |||
+ | < | ||
+ | openssl rsa -in ${filename}.key -out ${filename}.key | ||
+ | |||
+ | </ | ||
+ | |||
+ | ECDSA (elliptic curve) | ||
+ | |||
+ | Diese Schlüssel sind kleiner, bein Erzeugen wird kein Passwort verlangt | ||
+ | |||
+ | < | ||
+ | openssl ecparam -name prime256v1 -genkey -noout -out key.pem | ||
+ | |||
+ | </ | ||
+ | |||
+ | ec Key **mit** Passwort erzeugen | ||
+ | < | ||
+ | openssl ecparam -name prime256v1 -genkey | openssl ec -aes256 -out key.pem | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Certificate Signing Request ===== | ||
+ | |||
+ | Standard | ||
+ | |||
+ | Der csr wird entweder selber signiert oder an eine externe CA gegeben. -days regelt die Gültigkeit des Zertifikats und überschreibt die default Werte der ssh Konfiguration. | ||
+ | |||
+ | Einfacher CSR | ||
+ | < | ||
+ | |||
+ | openssl req -nodes -new -newkey rsa:2048 -sha256 -out csr.pem | ||
+ | |||
+ | </ | ||
+ | |||
+ | < | ||
+ | '' | ||
+ | |||
+ | </ | ||
+ | |||
+ | Achtung bei openvpn: CN muß mit " | ||
+ | |||
+ | Mit separater cnf Datei | ||
+ | |||
+ | < | ||
+ | [ req ] | ||
+ | default_bits | ||
+ | default_keyfile | ||
+ | distinguished_name | ||
+ | attributes | ||
+ | req_extensions | ||
+ | |||
+ | dirstring_type = nobmp | ||
+ | |||
+ | [ req_distinguished_name ] | ||
+ | C = DE | ||
+ | ST = Baden-Wuerttemberg | ||
+ | L = Stuttgart | ||
+ | O = Mercedes-Benz Group AG | ||
+ | CN = Common Name | ||
+ | emailAddress | ||
+ | |||
+ | [ req_attributes ] | ||
+ | challengePassword | ||
+ | challengePassword_min | ||
+ | challengePassword_max | ||
+ | |||
+ | [ v3_ca ] | ||
+ | |||
+ | subjectKeyIdentifier = hash | ||
+ | basicConstraints = CA:false | ||
+ | keyUsage = nonRepudiation, | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Signieren über eigene CA ===== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Achtung: Beim Signieren über die eigene CA werden die Zertifikat-Nr hochgezählt (serial in srl Datei). Die srl Datei muss auch für die ServerCA separat existieren. | ||
+ | |||
+ | '' | ||
+ | ===== Checks ===== | ||
+ | |||
+ | Inhalt kontrollieren | ||
+ | |||
+ | Auf der Shell im Klartext lesen: bei CERTs mit " | ||
+ | |||
+ | < | ||
+ | openssl x509 -text -noout -in ca.crt | ||
+ | openssl req -text -noout -verify -in csr.pem | ||
+ | |||
+ | </ | ||
+ | |||
+ | Check: Passen key und crt zusammen? | ||
+ | |||
+ | Replace < | ||
+ | |||
+ | < | ||
+ | openssl x509 -noout -modulus -in < | ||
+ | openssl rsa -noout -modulus -in < | ||
+ | |||
+ | </ | ||
+ | |||
+ | Danach ein diff der beiden Dateien: | ||
+ | < | ||
+ | |||
+ | diff / | ||
+ | |||
+ | </ | ||
+ | |||
+ | If nothing is printed to the console, they were found to be a pair. Any differences are printed to the console in detail. | ||
+ | |||
+ | ===== Formate und Konvertierung ===== | ||
+ | |||
+ | x509 nach pem | ||
+ | |||
+ | < | ||
+ | openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem | ||
+ | |||
+ | </ | ||
+ | |||
+ | Von pfx nach pem | ||
+ | |||
+ | < | ||
+ | openssl pkcs12 -in [pkcs-12-certificate-and-key-file] -out [pem-certificate-and-key-file] | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== PKCS Dateien erzeugen (*.pfx, *.p12) ==== | ||
+ | |||
+ | < | ||
+ | openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile more.crt | ||
+ | |||
+ | </ | ||
+ | |||
+ | ca-certs extrahieren | ||
+ | |||
+ | < | ||
+ | openssl pkcs12 -in ${filename}.pfx -nodes -nokeys -cacerts -out ${filename}-ca.crt | ||
+ | |||
+ | </ | ||
+ | |||
+ | key extrahieren | ||
+ | |||
+ | < | ||
+ | openssl pkcs12 -in ${filename}.pfx -nocerts -out ${filename}.key | ||
+ | |||
+ | </ | ||
+ | |||
+ | cert extrahieren | ||
+ | |||
+ | < | ||
+ | openssl pkcs12 -in ${filename}.pfx -clcerts -nokeys -out ${filename}.crt | ||
+ | |||
+ | </ | ||
+ | |||
+ | ca-certs und cert zusammen kleben | ||
+ | |||
+ | < | ||
+ | cat ${filename}.crt ${filename}-ca.crt> | ||
+ | |||
+ | </ | ||
+ | |||
+ | Passphäse aus key löschen | ||
+ | |||
+ | < | ||
+ | openssl rsa -in ${filename}.key -out ${filename}.key | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== CA und Sub CA erstellen ===== | ||
+ | |||
+ | Anleitung aus [[http:// | ||
+ | |||
+ | Privaten Schlüssel für CA mit gutem PW erzeugen | ||
+ | < | ||
+ | |||
+ | openssl genrsa -aes256 -out / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Danach öffentlichen Schlüssel erzeugen: | ||
+ | |||
+ | < | ||
+ | openssl req -new -x509 -days 1827 -key / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Mit der ServerCA lassen sich jetzt Zertifikate für Server erstellen. Diese sollten - weil sie ihren Private Key ohne menschliches Zutun benutzen müssen - keine Passphrase haben. Dies geschieht durch Weglassen des Verschlüsselungs-Algoritmus beim Erstellen des Private Key. Ansonsten sind das auch nur normale Zertifikate. Allerdings werden sie nicht von der RootCA, sondern von der ServerCA signiert. | ||
+ | |||
+ | ===== CA anlegen ===== | ||
+ | |||
+ | openssl genrsa -out apache.key.pem -rand ./ | ||
+ | |||
+ | openssl ca -name ServerCA -in apache.req.pem -out apache.cert.pem | ||
+ | |||
+ | mv newcerts/ | ||
+ | |||
+ | cd certs ln -s 01.pem | ||
+ | |||
+ | openssl x509 -hash -noout -in 01.pem` | ||
+ | |||
+ | Dabei nacheinander Land (DE), Region (ST), Stadt, Organisationsname (O) und -einheit (OU) eingeben, Wichtig: Der " | ||
+ | |||
+ | Achtung: Eigene Zertifikate für die virtual hosts gehen nur mit eigener IP Adresse für jeden dieser Server. Alternative ist subjectaltname, | ||
+ | |||
+ | Verlinkung der erzeugten Zertifikate | ||
+ | |||
+ | Um dieses erste Zertifikat der RootCA in das normale Handling der CA zu geben, muß es noch kopiert und verlinkt werden. Die Zertifikate werden im Unterverzeichnis certs mit dem Namen Ihrer Seriennummer gelegt und der Hash-Wert wird verlinkt: | ||
+ | |||
+ | cd / | ||
+ | cp RootCA.cert.pem / | ||
+ | |||
+ | cd / | ||
+ | ln -s 00.pem `openssl x509 -hash -noout -in 00.pem`. | ||
+ | |||
+ | ===== Sub CA für Server Signaturen erstellen ===== | ||
+ | |||
+ | Wie oben, nur wird ein CSR erzeugt, der von der Root CA signiert werden muss. | ||
+ | |||
+ | privaten Schlüssel erzeugen | ||
+ | |||
+ | Dann singning request (CSR) * mit RootCA signieren | ||
+ | |||
+ | CSR erzeugen: openssl req -new -key / | ||
+ | |||
+ | Signieren und hier die zeitliche Gültigkeit definieren: | ||
+ | |||
+ | openssl x509 -req -days 720 -in certs/ | ||
+ | |||
+ | Achtung: im Verz. des zum Signieren benutzten RootCA files muss es eine serial Datei geben: | ||
+ | |||
+ | The default filename consists of the CA certificate file base name with .srl appended. For example if the CA certificate file is called mycacert.pem, | ||
+ | |||
+ | ===== mTLS mit Apache ===== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | ===== EASYrsa (openvpn) ===== | ||
+ | |||
+ | Siehe [[: | ||
+ | |||
+ | ===== SSL Test mit openssl s_client ===== | ||
+ | |||
+ | Das Standard-Tool für die Analyse von SSL-Funktionen ist das Kommandozeilenprogramm von OpenSSL. Siehe [[https:// | ||
+ | < | ||
+ | |||
+ | openssl s_client -connect imap.1und1.de: | ||
+ | |||
+ | </ | ||
+ | |||
+ | Kommt als Ergebnis eine Ciphersuite heraus, die mit DH oder ECDH beginnt, haben sich die beiden Kommunikationspartner auf **Forward Secrecy **geeinigt. Ob ein Server überhaupt Forward Secrecy beherrscht, verrät: | ||
+ | < | ||
+ | openssl s_client -cipher ' | ||
+ | |||
+ | </ | ||
+ | |||
+ | Ob ein Server Diffie-Hellman erzwingt, auch wenn der Client RSA bevorzugt, verrät die cipher-Spezifikation ' | ||
+ | |||
+ | < | ||
+ | openssl s_client -starttls smtp -connect smtp.gmx.net: | ||
+ | |||
+ | </ | ||
+ | |||