Dies ist eine alte Version des Dokuments!
OPENSSL
privaten Schlüssel erzeugen (RSA)
Bei RSA Schlüsseln wird automatisch ein Passwort abgefragt. Das kann man in einem zweiten Schritt wieder entfernen:
openssl genrsa -aes256 -out dvsdnet.devoteam.de.key.pem
Passphrase aus key löschen (RSA)
openssl rsa -in ${filename}.key -out ${filename}.key
Schlüssel mit 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 (CSR)
-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.
Einfacher CSR
openssl req -nodes -new -newkey rsa:2048 -sha256 -out csr.pem
Achtung bei openvpn: CN muß mit "locutusvpn" beginnen, da die im Server geprüft wird (Server Parameter –verify-x509-name locutusvpn name-prefix)
openssl req -new -key private/openvpn_client_odysseus.key -out certs/openvpn_client_odysseus.req.pem -days 730
Signieren über eigene CA
openssl x509 -req -in certs/openvpn_client_odysseus.req.pem -CA certs/RootCA.cert.pem -CAkey private/RootCA.key.pem -out certs/openvpn_client_odysseus.cert.pem -days 720
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.
mv newcerts/01.pem certs/ cd certs ln -s 01.pem `openssl x509 -hash -noout -in 01.pem`.0
Erstellen eines csr mit einer cnf Datei
openssl req -new -key radius_rsa.key -out radius.xdc.dev.gspp-eu.corpinter.net_rsa.csr -config openssl.cnf
cnf Datei
[ req ] default_bits = 2048 default_keyfile = privkey.key distinguished_name = req_distinguished_name attributes = req_attributes req_extensions = v3_ca dirstring_type = nobmp [ req_distinguished_name ] C = DE ST = Baden-Wuerttemberg L = Stuttgart O = Mercedes-Benz Group AG CN = Common Name emailAddress = test@email.address [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 [ v3_ca ] subjectKeyIdentifier = hash basicConstraints = CA:false keyUsage = nonRepudiation, digitalSignature, keyEncipherment
Check: Passen ein key und ein signiertes cert zusammen?
Replace <public.crt> with the filename of the public certificate.
openssl x509 -noout -modulus -in <public.crt> | openssl md5> /tmp/crt.pub openssl rsa -noout -modulus -in <private.key> | openssl md5> /tmp/key.pub
Danach ein diff der beiden Dateien:
diff /tmp/crt.pub /tmp/key.pub
If nothing is printed to the console, they were found to be a pair. Any differences are printed to the console in detail.
Check: Inhalte kontrollieren
Auf der Shell im Klartext lesen: bei CERTs mit "x509", bei CSRs mit "req"
openssl x509 -text -noout -in ca.crt openssl req -text -noout -verify -in csr.pem
Revocation list
xx
Test einer ssl Verbindung mit openssl s_client
Das Standard-Tool für die Analyse von SSL-Funktionen ist das Kommandozeilenprogramm von OpenSSL.
openssl s_client -connect imap.1und1.de:993
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 'ECDH:DH' -connect login.live.com:443
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 'RSA:ECDH:DH'. OpenSSL unterstützt auch Verbindungen, bei denen man die Verschlüsselung über den starttls anfordern muss, wie es etwa im Mail-Versandprotokoll SMTP üblich ist:
openssl s_client -starttls smtp -connect smtp.gmx.net:587
Dokumentation zu openssl siehe auch http://www.openssl.org/docs/