OpenSSL
Transcription
OpenSSL
OpenSSL Möglichkeiten und Anwendungen Prof. Dr. Uwe Heuert Fachbereich Ingenieur- und Naturwissenschaften http://www.inw.hs-merseburg.de/~uheuert/ Was ist OpenSSL Eine Open Source Bibliothek „Apache-style licence“: Robuste C-Implementierung: freie Verwendung in nicht-kommerziellen und kommerziellen Projekten! Big-Number Arithmetik Kryptographische Methoden ASN.1 Parser und Encoder PKI-Standards und Objekte (u.a. X.509) Platformunabhängig (Windows, Unix‘e) Krypto-Baustein bekannter Applikationen: Apache Web Server OpenSSH Wie sieht OpenSSL aus? Spartanisch: Wie sieht OpenSSL aus? Unübersichtlich („openssl x509 --“): Wie sieht OpenSSL aus? Aus Sicht des Entwicklers: „Fully featured“ 2 Bibliotheken: • Libeay32.dll • Ssleay32.dll Und eine „Test“Applikation: • Openssl.exe Was kann man mit OpenSSL machen? Zum Beispiel: X.509 Zertifikate ausstellen, anzeigen und verifizieren PKCS#7 Signaturen erstellen und verifizieren Daten ver- und entschlüsseln (PKCS#7) SSL als Server und Client Zertifikate ausstellen (Root CA) Root-CA bauen: openssl req -config "openssl.cnf" -new sha1 -keyout "root.key" -x509 -newkey rsa:2048 -out "root.pem" -days 1825 extensions x509v3_extensions Zertifikate ausstellen (Sub CA) Sub-CA bauen: PKCS#10 Request: openssl req -config "openssl.cnf" -new -sha1 keyout "sub.key" -newkey rsa:1024 -out "sub.req" -days 1035 -extensions x509v3_extensions X.509 Ausstellung: openssl x509 -req -in "sub.req" -out "sub.pem" -extfile "openssl.cnf" -extensions x509v3_extensions -CAcreateserial -CA "..\root\root.pem" -CAkey "..\root\root.key" sha1 -days 1035 Zertifikate ausstellen (SSL Server) SSL Server Zertifikat bauen: PKCS#10 Request: Wie Sub-CA. X.509 Ausstellung: openssl x509 -req -in "server.req" -out "server.pem" extfile openssl.cnf -extensions x509v3_extensions CAcreateserial -CA "..\sub\sub.pem" -CAkey "..\sub\sub.key" -sha1 -days 1035 Zertifikate ausstellen (SSL Client) SSL Server Zertifikat bauen: PKCS#10 Request: Wie Sub-CA. X.509 Ausstellung: Wie SSL Server. Und nun? X.509 „lesbar“ anzeigen: Und sonst? X.509 Verifikation openssl verify -CAfile "..\ca\chain.pem" "client.pem„ Wie wäre es mit einer digitalen Signatur? openssl smime -sign -signer "client.pem" -inkey "client.key" -in "test.txt" -out "test.dsig" Detached PKCS#7 Aus … wird … Und die Prüfung? … geht schief. Warum? Die X.509v3 Extensions! extendedKeyUsage = clientAuth SSL Client Zertifikat Dann eben SSL … Der Server: openssl s_server -cert "server.pem" -key "server.key“ Unspektakulär: Ein Verbindungsversuch Es spricht: openssl s_client connect localhost:4433 aber noch nicht perfekt („unable to get local issuer certificate“) Besser: openssl.exe s_client -connect localhost:4433 CAfile "..\ca\chain.pem" verify 2 Und so weiter …