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 …