Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
openssl [14/08/2024 - 16:18] – admin | openssl [06/09/2024 - 07:30] (aktuell) – [Test einer ssl Verbindung mit openssl s_client] admin1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== OPENSSL ====== | ====== OPENSSL ====== | ||
- | ==== 1. privaten Schlüssel erzeugen (RSA) ==== | + | ===== privaten Schlüssel erzeugen (RSA) ===== |
- | Bei RSA wird automatisch ein Passwort abgefragt. Das kann man in einem zweiten Schritt wieder entfernen: | + | Bei RSA Schlüsseln |
< | < | ||
Zeile 10: | Zeile 10: | ||
</ | </ | ||
- | ==== 2. Passphrase aus key löschen (RSA) ==== | + | Passphrase aus key löschen (RSA) |
< | < | ||
Zeile 17: | Zeile 17: | ||
</ | </ | ||
- | ==== 3. Key mit elliptic curve (ohne PW) ==== | + | ===== Schlüssel |
+ | |||
+ | Diese Schlüssel sind kleiner, bein Erzeugen wird kein Passwort verlangt | ||
< | < | ||
Zeile 24: | Zeile 26: | ||
</ | </ | ||
- | ==== 4. Certificate Signing Request (CSR) ==== | + | ec Key **mit** Passwort erzeugen |
+ | < | ||
+ | openssl ecparam -name prime256v1 -genkey | openssl ec -aes256 -out key.pem | ||
- | -days regelt die Gültigkeit des Zertifikats und überschreibt die default Werte der ssh Konfiguration. Achtung bei openvpn: CN muß mit " | + | </ |
- | '' | + | -days regelt die Gültigkeit des Zertifikats und überschreibt die default Werte der ssh Konfiguration. |
- | Der csr wird entweder selber signiert oder an eine externe CA gegeben, z.B. StartSSL | + | Der csr wird entweder selber signiert oder an eine externe CA gegeben. |
- | === Signieren über eigene CA === | + | Einfacher CSR |
+ | < | ||
+ | |||
+ | openssl req -nodes -new -newkey rsa:2048 -sha256 -out csr.pem | ||
+ | |||
+ | </ | ||
+ | |||
+ | Achtung bei openvpn: CN muß mit " | ||
+ | |||
+ | '' | ||
+ | ==== Signieren über eigene CA ==== | ||
'' | '' | ||
Zeile 39: | Zeile 53: | ||
'' | '' | ||
- | + | ===== Erstellen eines csr mit einer cnf Datei ===== | |
- | Einfacher CSR | + | |
< | < | ||
- | openssl req -nodes -new -newkey rsa:2048 -sha256 -out csr.pem | + | openssl req -new -key radius_rsa.key -out radius.xdc.dev.gspp-eu.corpinter.net_rsa.csr -config openssl.cnf |
- | + | ||
- | </ | + | |
- | ==== 5. Erstellen eines csr mit einer cnf Datei ==== | + | |
- | + | ||
- | < | + | |
- | < | + | |
</ | </ | ||
Zeile 56: | Zeile 63: | ||
< | < | ||
- | < | + | [ req ] |
+ | default_bits | ||
default_keyfile | default_keyfile | ||
distinguished_name | distinguished_name | ||
Zeile 85: | Zeile 93: | ||
</ | </ | ||
- | ==== 6. Passen ein key und ein signiertes cert zusammen? ==== | + | ===== Check: |
- | Replace < | + | Replace < |
< | < | ||
openssl x509 -noout -modulus -in < | openssl x509 -noout -modulus -in < | ||
+ | |||
+ | openssl rsa -noout -modulus -in < | ||
</ | </ | ||
+ | |||
+ | Danach ein diff der beiden Dateien: | ||
< | < | ||
- | |||
- | openssl rsa -noout -modulus -in < | ||
- | //Note: Replace < | ||
diff / | diff / | ||
- | |||
- | Note: If nothing is printed to the console, they were found to be a pair. Any differences are printed to the console in detail.// | ||
</ | </ | ||
- | ==== 7. Inhalte kontrollieren ==== | + | If nothing is printed to the console, they were found to be a pair. Any differences are printed to the console in detail. |
+ | |||
+ | ===== Check: | ||
Auf der Shell im Klartext lesen: bei CERTs mit " | Auf der Shell im Klartext lesen: bei CERTs mit " | ||
- | < | ||
+ | < | ||
openssl x509 -text -noout -in ca.crt | openssl x509 -text -noout -in ca.crt | ||
Zeile 114: | Zeile 123: | ||
</ | </ | ||
+ | ===== Revocation list ===== | ||
- | ==== 8. Revocation list (kann PEM oder DER codiert sein) ==== | + | xx |
- | + | ||
- | < | + | |
- | openssl crl -inform PEM -text -noout -in crl.pem | + | |
- | + | ||
- | </ | + | |
===== Test einer ssl Verbindung mit openssl s_client ===== | ===== Test einer ssl Verbindung mit openssl s_client ===== | ||
- | siehe [[http:// | + | Das Standard-Tool für die Analyse von SSL-Funktionen |
- | Hinweis zu s_client: Zugriff über Proxy (mit -proxy host: | + | |
- | Das Standard-Tool für die Analyse von SSL-Funktionen ist das Kommandozeilenprogramm von OpenSSL. | + | https:// |
< | < | ||
- | |||
openssl s_client -connect imap.1und1.de: | 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: | + | 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 ' | openssl s_client -cipher ' | ||
Zeile 140: | Zeile 143: | ||
</ | </ | ||
- | Dieses Beispiel zeigt, dass auch Microsofts Server durchaus DH-Verfahren im Repertoire haben. | + | Ob ein Server Diffie-Hellman erzwingt, auch wenn der Client RSA bevorzugt, verrät die cipher-Spezifikation ' |
< | < | ||
Zeile 151: | Zeile 154: | ||
===== Zufalls-Passwort generieren ===== | ===== Zufalls-Passwort generieren ===== | ||
- | '' | + | < |
+ | openssl rand -base64 | ||
+ | |||
+ | </ | ||
Alternativ über doveadmin, siehe dort. | Alternativ über doveadmin, siehe dort. | ||
- | ====== Zertifikat Formate und ihre Konvertierung ====== | + | ===== Zertifikat Formate und ihre Konvertierung ===== |
+ | |||
+ | PKCS Dateien erzeugen (*.pfx, *.p12) | ||
- | ===== PKCS Dateien erzeugen (*.pfx, *.p12) ===== | ||
< | < | ||
- | + | openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile more.crt | |
- | openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile more.crt | + | |
</ | </ | ||
- | openssl – the command for executing OpenSSL * pkcs12 – the file utility for PKCS#12 files in OpenSSL * - export - out certificate .pfx – export and save the PFX file as certificate.pfx * - inkey privateKey | + | This is optional, this is if you have any additional certificates you would like to include |
+ | |||
+ | User Zertifikat erzeugen wie Server Zertifikat. Für VPN Verbindung kann ohne Passwort gearbeitet werden, es geht aber auch mit Passwort! | ||
+ | |||
+ | < | ||
+ | openssl genrsa | ||
+ | |||
+ | </ | ||
- | This is optional, this is if you have any additional certificates you would like to include in the PFX file. **User Zertifikat erzeugen** wie Server Zertifikat. Für VPN Verbindung kann ohne Passwort gearbeitet werden, es geht aber auch mit Passwort! openssl genrsa -aes256 -out apache.key.pem -rand ./ | + | Key Formate konvertieren |
- | ====== | + | |
- | ===== Von pfx nach pem ===== | + | Von pfx nach pem |
< | < | ||
- | openssl pkcs12 -in [pkcs-12-certificate-and-key-file] | + | openssl pkcs12 -in [pkcs-12-certificate-and-key-file] -out [pem-certificate-and-key-file] |
</ | </ | ||
Zeile 200: | Zeile 212: | ||
< | < | ||
- | cat ${filename}.crt ${filename}-ca.crt> | + | cat ${filename}.crt ${filename}-ca.crt> |
</ | </ | ||
Zeile 211: | Zeile 223: | ||
</ | </ | ||
- | ===== Von DER encoded (crt/cer) nach PGP (pem) ===== | ||
- | < | + | ===== Certification Authority ===== |
- | openssl x509 -in mycert.crt -out mycert.pem -outform PEM | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | ====== Certification Authority | + | |
- | Anleitung aus [[:http: | + | Anleitung aus [[http://fra.nksteidl.de/ |
Privaten Schlüssel für CA mit gutem PW erzeugen | Privaten Schlüssel für CA mit gutem PW erzeugen | ||
- | < | ||
- | openssl genrsa -aes256 -out /etc/ssl// | + | openssl genrsa -aes256 -out /etc/sslprivate/ |
- | + | ||
- | </ | + | |
Danach öffentlichen Schlüssel erzeugen: | Danach öffentlichen Schlüssel erzeugen: | ||
- | < | ||
openssl req -new -x509 -days 1827 -key / | openssl req -new -x509 -days 1827 -key / | ||
- | |||
- | </ | ||
===== CA erzeugen ===== | ===== CA erzeugen ===== | ||
- | nach [[http:// | + | \\ |
+ | openssl genrsa -out apache.key.pem -rand ./private/.rand 2048 openssl req -new -key apache.key.pem -out apache.req.pem | ||
- | cd ServerCA\\ | + | openssl ca -name ServerCA -in apache.req.pem -out apache.cert.pem |
- | openssl genrsa -out apache.key.pem -rand ./ | + | |
- | + | ||
- | openssl req -new -key apache.key.pem -out apache.req.pem | + | |
mv newcerts/ | mv newcerts/ | ||
- | cd certs | + | cd certs ln -s 01.pem |
- | ln -s 01.pem `openssl x509 -hash -noout -in 01.pem`.0 | + | openssl x509 -hash -noout -in 01.pem` |
Dabei nacheinander Land (DE), Region (ST), Stadt, Organisationsname (O) und -einheit (OU) eingeben, Wichtig: Der " | 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, | + | Achtung: Eigene Zertifikate für die virtual hosts gehen nur mit eigener IP Adresse für jeden dieser Server. Alternative ist subjectaltname, |
- | + | ||
- | Dann den Server neu starten. Beim ersten https Zugriff per Browser wird das Zertifikat angeboten. Ggf. den Inhalt des Zertifikats prüfen. (Klick auf das Verschlüsselungs-Symbol im Browser unten rechts) | + | |
- | ===== Verlinkung der erzeugten Zertifikate | + | 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: | 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: | ||
Zeile 265: | Zeile 261: | ||
cd / | cd / | ||
- | ln -s 00.pem `openssl x509 -hash -noout -in 00.pem`.0 | + | ln -s 00.pem `openssl x509 -hash -noout -in 00.pem`. |
- | ==== Sub CA für Server Signaturen erstellen ==== | + | ===== Sub CA für Server Signaturen erstellen |
- | Wie oben, nur wird ein CSR erzeugt, der von der Root CA signiert werden muss, die damit das Zertifikat erstellt. | + | Wie oben, nur wird ein CSR erzeugt, der von der Root CA signiert werden muss. |
- | * privaten Schlüssel erzeugen | + | privaten Schlüssel erzeugen |
- | openssl req -new -key / | + | Dann singning request (CSR) * mit RootCA signieren |
+ | |||
+ | CSR erzeugen: | ||
Signieren und hier die zeitliche Gültigkeit definieren: | Signieren und hier die zeitliche Gültigkeit definieren: | ||
Zeile 283: | Zeile 281: | ||
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, | 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, | ||
- | ===== | + | ===== Zertifikate erzeugen |
- | ====== Zertifikate erzeugen ====== | + | Für Signieren über die eigene CA oder zum externen Signieren. 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. |
- | + | ||
- | Für Signieren über die eigene CA oder zum externen Signieren. | + | |
- | + | ||
- | 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. | + | |
===== Einrichten von Apache mit mod_ssl ===== | ===== Einrichten von Apache mit mod_ssl ===== | ||
Zeile 297: | Zeile 291: | ||
Neue Anleitung für opensuse siehe [[http:// | Neue Anleitung für opensuse siehe [[http:// | ||
- | ===== | + | ===== Easy RSA - gängige Befehle ===== |
- | + | ||
- | ====== Easy RSA - gängige Befehle | + | |
Siehe [[https:// | Siehe [[https:// | ||
- | Zeritifkate konvertieren | + | Zeritifkate konvertieren nur privatebn Schlüssel extrahieren # openssl pkcs12 -in filename.pfx -nocerts -out key.pem Zertifikat exportieren # openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem Diffie hellman Parameter erzeugen openssl dhparam -out dhparams.pem 4096 |
- | + | ||
- | nur privatebn Schlüssel extrahieren | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | Zertifikat exportieren | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | Diffie hellman Parameter erzeugen | + | |
- | < | + | |
- | + | ||
- | openssl dhparam -out dhparams.pem 4096 | + | |
- | + | ||
- | </ | + | |