Kryptographie und TCP/IP
Secure Socket Layer (SSL)
Transport Layer Security (TLS)
Zertifikate nach X.509
OpenSSL
Java SSL (JSSE)
Einsatzpunkte im Schichtenmodell
Schicht | Bemerkungen | Kryptographie |
---|---|---|
5. Verarbeitung Anwendung |
Telnet, FTP, SMTP, NNTP, HTTP | PGP, S-HTTP, HTTP over SSL |
4. Transport | TCP, UDP | SSL |
3. Vermittlung | IP, Internet Protocoll | IPv6 |
2. Sicherung | Adapter-Karten | |
1. Bitübertragung | Leitungen, Elektronik |
Verarbeitungs- / Anwendungsebene
abgestimmt auf Anwendung
Reimplementierung für jede Anwendung
Beispiel: PGP, Secure-HTTP (S-HTTP)
Transportschicht
einmalige Implementierung
alle Daten werden verschlüsselt
Beispiel: Secure Socket Layer (SSL)
HTTP over SSL: https://host/path/x.html
Netzwerkschicht / Vermittlungsebene
einmalige Implementierung
alle Daten werden verschlüsselt
Beispiel: IP version 6 (IPv6) oder VPN
implementiert die TCP/IP Socket Programmier-Schnittstelle
Protokoll zur sicheren Client/Server Datenübertragung
Standardisiert:
SSL 2.0 (von Netscape),
SSL 3.0 (Internet Draft von Netscape),
TLS 1.0 (Internet Standard, von IETF, RFC 2246)
SSL 3.0 =~= TLS 1.0
Ziele
kryptographische Sicherheit
Interoperabilität
offenes Protokoll
Erweiterbarkeit
neue Verfahren können eingebunden werden
Effizienz
Speichermöglichkeit für ausgehandelte
Verbindungen
für alle TCP/IP Anwendungen nutzbar
leichter zu benutzen und zu verwalten
effizient
evtl. Probleme mit Firewalls
erweiterbar nur mit Rücksicht auf TCP/IP
SSL Protokoll liegt zwischen der Transportschicht und der Anwendungsschicht
aus Sicht der Transportschicht:
SSL ist Anwendung
aus Sicht der Anwendung:
SSL ist Transportschicht (Socket)
SSL besteht aus zwei Schichten plus Statusinformationen
Steuerprotokolle
Verbindungsaushandlung
schreibt Verbindungsparameter in Status
austauschbar
Handshake Protocol, Change Cipher Protocol, Alert Protocol
Recordprotokoll
Kodierung und Transfer entsprechend dem Status
Status
beinhaltet Verbindungsparameter
wird mit Nullwerten initialisiert
durch SSL Handshake Protokoll
Aushandeln von Verbindungsmodalitäten
Protocol Version, Session Id, Cipher Suite,
Compression Method, Random Variables
Austausch von Zertifikaten
(optional)
Schlüsselaustausch
(optional)
Umstellen der Verbindung entsprechend den ausgehandelten Werten
Key Exchange Method
wie werden die gemeinsamen symmetrischen Schlüssel ausgetauscht ?
SSL 2.0 nur RSA, SSL 3.0 auch andere
Cipher for Data Transfer, mit symmetrischen Schlüssel
Stream Ciphers: RC4
Block Ciphers: RC2, DES, Triple-DES, IDEA
Message Digest Method
MD5, SHA-1, für Message Authentication (MAC)
SSL Alert Protokoll behandelt folgende Fehlerarten
unerwartete Nachricht
falsche Prüfsumme
Entpackungsfehler
Handshake Fehler
Kein Zertifikat vorhanden
Ungültiges Zertifikat
Nicht unterstütztes Zertifikat
Ungültiger Parameter
=> Fehlerfall: Nachricht und Verbindungsabbruch
Fehlernachricht wird verschlüsselt gesandt
alle Informationen über die Verbindung werden gelöscht
Browser:
Netscape 1.x, 2.x, 3.x, 4.x, 6.x, 7.x
Firefox 1.x
Microsoft IE 3.x, 4.x, 5.x, 6.x, 7.x
Opera
Lynx 2.8 mit OpenSSL
Server:
Netscape, Microsoft
Apache mit mod_ssl und OpenSSL
Probleme:
Import / Export Restriktionen einzelner Länder
Beschränkungen in der Schlüssellänge
Patentierung einiger Verfahren
Zertifikat (certificate) beglaubigt die Verbindung von einem öffentlichen Schlüssel und der Identifikation einer Person.
Die Personen-Identifikation erfolgt mit einem Distinguished Name (DN).
Die Spezifikation eines DN ist im X.509 Standard festgelegt.
DN Feld | Abkürzung | Bedeutung |
---|---|---|
Common Name | CN | Name der Person |
Organization | O | Firma oder Organisation |
Organizational Unit | OU | Abteilung oder Firmenteil |
Locality | L | Stadt, Sitz der Organisation |
State | ST | Staat, Provinz, Gegend |
Country | C | ISO Länderkode |
Beispiel:
CN=Karl Dall O=Schlangenöl AG OU=Brillenabteilung L=Schlangenbad ST=Hessen C=de
Ein Zertifikat kombiniert die Informationen über das Individuum mit weiteren Informationen über die Ausgabestelle und diversen Verwaltungsinformationen:
Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: md5WithRSAEncryption Issuer: C=XY, ST=Snake Desert, L=Snake Town, O=Snake Oil, Ltd, OU=Certificate Authority, CN=Snake Oil CA/Email=ca@snakeoil.dom Validity Not Before: Oct 29 17:39:10 2000 GMT Not After : Oct 29 17:39:10 2001 GMT Subject: C=DE, ST=Germany, L=Weinheim, O=Home, OU=Web Lab, CN=krimel-wh.isdn.uni-mannheim.de/Email=krimel@rz.uni-mannheim.de Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:c4:40:4c:6e:14:1b:61:36:84:24:b2:61:c0:b5: ... f0:b4:95:f5:f9:34:9f:f8:43 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Alternative Name: email:krimel@rz.uni-mannheim.de Netscape Comment: mod_ssl generated test server certificate Netscape Cert Type: SSL Server Signature Algorithm: md5WithRSAEncryption 12:ed:f7:b3:5e:a0:93:3f:a0:1d:60:cb:47:19:7d:15:59:9b: ...
Zertifikate können bei verschiedenen Organisationen (gegen Gebühr) bestellt werden. Zum Beispiel bei Verisign, Thawte, CertiSign oder IKS GmbH.
OpenSSL bietet eine offene Implementierung von SSL und TLS.
Die gewünschten Schlüssel kann man sich mit Hilfe der OpenSSL Kommandozeilen Tools erzeugen.
Erzeugen eines eigenen Schlüsselpaars mit öffentlichem und privatem Teil
Erzeugen einer Anforderung zur Zertifizierung
Zertifizieren von Schlüsseln
Testen der verschlüsselten Kommunikation mit dem OpenSSL Server oder Client
Einsatz der Zertifikate in Servern (z.B. Web-Server mit HTTPS)
Einsatz der Zertifikate in Browsern (auch über HTTPS)
Beispiel Laden eines DFN Zertifikates in den Browser von der RUM CA.
Schlüsselpaare werden mit dem Kommando
openssl genrsa
erzeugt.
openssl genrsa -des3 -out user.key 1024 Generating RSA private key, 1024 bit long modulus .................................................. .............................++++++ ........................++++++ e is 65537 (0x10001) Enter PEM pass phrase: Verifying password - Enter PEM pass phrase:
Ergebnis:
-----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,DCDD31A379A9E2D6 TlFTgbOfniqLvHIWDmp+faRJA3WYI2WUoiqhGZl85HuMidEK08UNRePwtqRnKNWv DEUDBiGWLap7bgg9yaWuK8jSruSYOJZGkPQdO9t4bD6TQiTXTRkDyC8iIS8R2tbD ... 6DfMmbpuhsaIbYyv3BQfmNDoWSeebTLBtU67jvzq6rzGxcvmrCAbNIES4B7PMqrY v0WcUNBSF5+PAMw5V2KsKTklesuh/Yczh7bkBMaQdJo= -----END RSA PRIVATE KEY-----
Ergebnis als Text:
openssl rsa -noout -text -in myca.key read RSA key Enter PEM pass phrase: Private-Key: (1024 bit) modulus: 00:9d:a0:a1:0e:97:55:aa:74:88:3b:05:c0:18:72: ... 58:72:a4:3a:41:46:22:5a:d5 publicExponent: 65537 (0x10001) privateExponent: ... prime1: 00:cb:ba:31:10:49:d7:4e:51:99:58:c1:cc:05:54: ... prime2: 00:c6:12:5f:85:c2:f1:a8:e7:20:00:e4:af:8f:4d: ... exponent1: 2a:db:a9:94:ae:a4:0f:c2:d4:ca:ba:42:4c:60:cb: ... exponent2: 02:d3:6a:47:77:43:8 ... coefficient: 5b:58:6d:ef:be:37:45:e7:93:36:fd:ae:a9:86:d6: ...
Zertifikatsanforderungen werden mit dem Kommando
openssl req
erzeugt.
openssl req -new -key user.key -out user.csr Using configuration from /etc/ssl/openssl.cnf Enter PEM pass phrase: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:de State or Province Name (full name) [Some-State]:ba-wue Locality Name (eg, city) []:mannheim Organization Name (eg, company) [Internet Widgits Pty Ltd]:uni Organizational Unit Name (eg, section) []:it Common Name (eg, YOUR name) []:Karl Dall Email Address []:kd@al.de Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:. An optional company name []:.
Ergebnis:
-----BEGIN CERTIFICATE REQUEST----- MIIBuTCCASICAQAweTELMAkGA1UEBhMCZGUxDzANBgNVBAgTBmJhLXd1ZTERMA8G ... skXL47VitW2udc/Mgg== -----END CERTIFICATE REQUEST-----
Ergebnis als Text:
openssl req -noout -text -in user.csr Using configuration from /etc/ssl/openssl.cnf Certificate Request: Data: Version: 0 (0x0) Subject: C=de, ST=ba-wue, L=mannheim, O=uni, OU=it, CN=Karl Dall/Email=kd@al.de Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:9d:a0:a1:0e:97:55:aa:74:88:3b:05:c0:18:72: ... 58:72:a4:3a:41:46:22:5a:d5 Exponent: 65537 (0x10001) Attributes: a0:00 Signature Algorithm: md5WithRSAEncryption 37:1c:98:34:0f:42:67:84:e9:2a:8c:f3:3c:38:8e:3a:9d:75: ... f0:ce:20:2b:62:dd:5a:b2:45:cb:e3:b5:62:b5:6d:ae:75:cf: cc:82
Zertifikate für den eigenen Schlüssel können selbst erzeugt
werden mit dem Kommando
openssl req -x509
.
openssl req -new -x509 -key myca.key -out myca.crt Using configuration from /etc/ssl/openssl.cnf Enter PEM pass phrase: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:de State or Province Name (full name) [Some-State]:ba-wue Locality Name (eg, city) []:mannheim Organization Name (eg, company) [Internet Widgits Pty Ltd]:uni Organizational Unit Name (eg, section) []:it Common Name (eg, YOUR name) []:Carl Cert Email Address []:cert@home.de
Ergebnis:
openssl x509 -noout -text -in myca.crt Certificate: Data: Version: 3 (0x2) Serial Number: 0 (0x0) Signature Algorithm: md5WithRSAEncryption Issuer: C=de, ST=ba-wue, L=mannheim, O=uni, OU=it, CN=Carl Cert/Email=cert@home.de Validity Not Before: May 22 20:12:08 2004 GMT Not After : Jun 21 20:12:08 2004 GMT Subject: C=de, ST=ba-wue, L=mannheim, O=uni, OU=it, CN=Carl Cert/Email=cert@home.de Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:b5:b1:39:fb:4a:ca:1b:af:05:4e:87:20:dd:86: ... 37:ac:91:e3:36:f0:29:f0:21 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: C1:F0:F0:91:DC:CD:7E:7A:29:1C:44:0A:F2:64:0F:7E:C9:1F:BE:BE X509v3 Authority Key Identifier: keyid:C1:F0:F0:91:DC:CD:7E:7A:29:1C:44:0A:F2:64:0F:7E:C9:1F:BE:BE DirName:/C=de/ST=ba-wue/L=mannheim/O=uni/OU=it/CN=Carl Cert/Email=cert@home.de serial:00 X509v3 Basic Constraints: CA:TRUE Signature Algorithm: md5WithRSAEncryption 18:15:56:cb:51:b1:e2:6d:8e:c5:a4:e0:45:4c:57:60:51:6b: ... ff:8d
Die Kommunikation über SSL kann mit den Kommandos
openssl s_server
für einen SSL-Server
und
openssl s_client
für einen SSL-Client
getestet werden.
Zum Beispiel kann mit dem
Client eine Verbindung zu einem HTTPS Web-Server hergestellt werden,
oder mit dem Server kann ein HTTPS Web-Browser getestet werden.
Starten eines SSL-Servers:
openssl s_server -cert myca.crt -key myca.key Using default temp DH parameters Enter PEM pass phrase: ACCEPT -----BEGIN SSL SESSION PARAMETERS----- MHUCAQECAgMBBAIAFgQgWG2fR8+cuE+pH/IzRoGu7Bao9hDtGuhdXxQwbojlWNoE MHSAmy7C1n9t6lchz+POiOXQOpI70+lUUuL8fcPOVFU0NUe3rz8OsacXxD1wTrgi 2aEGAgQ+0olHogQCAgEspAYEBAEAAAA= -----END SSL SESSION PARAMETERS----- Shared ciphers:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:DES-CBC3-SHA: DHE-DSS-RC4-SHA:RC4-SHA:RC4-MD5:EXP1024-DHE-DSS-RC4-SHA:EXP1024-RC4-SHA: EXP1024-DHE-DSS-DES-CBC-SHA:EXP1024-DES-CBC-SHA:EXP1024-RC2-CBC-MD5: EXP1024-RC4-MD5:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA: EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA: EXP-RC2-CBC-MD5:EXP-RC4-MD5 CIPHER is EDH-RSA-DES-CBC3-SHA Hallo Wie gehts? DONE shutting down SSL CONNECTION CLOSED
Starten eines SSL-Clients:
openssl s_client -connect localhost:4433 -state CONNECTED(00000003) SSL_connect:before/connect initialization SSL_connect:SSLv2/v3 write client hello A SSL_connect:SSLv3 read server hello A depth=0 /C=de/ST=ba-wue/L=mannheim/O=uni/OU=it/CN=Carl Cert/Email=cert@home.de verify error:num=18:self signed certificate verify return:1 depth=0 /C=de/ST=ba-wue/L=mannheim/O=uni/OU=it/CN=Carl Cert/Email=cert@home.de verify return:1 SSL_connect:SSLv3 read server certificate A SSL_connect:SSLv3 read server key exchange A SSL_connect:SSLv3 read server done A SSL_connect:SSLv3 write client key exchange A SSL_connect:SSLv3 write change cipher spec A SSL_connect:SSLv3 write finished A SSL_connect:SSLv3 flush data SSL_connect:SSLv3 read finished A --- Certificate chain 0 s:/C=de/ST=ba-wue/L=mannheim/O=uni/OU=it/CN=Carl Cert/Email=cert@home.de i:/C=de/ST=ba-wue/L=mannheim/O=uni/OU=it/CN=Carl Cert/Email=cert@home.de --- Server certificate -----BEGIN CERTIFICATE----- MIIDTDCCArWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB9MQswCQYDVQQGEwJkZTEP ... agFM3TOF5bRis9fyA2JspiJTV2RwgzWU4PD1tw6L/40= -----END CERTIFICATE----- subject=/C=de/ST=ba-wue/L=mannheim/O=uni/OU=it/CN=Carl Cert/Email=cert@home.de issuer=/C=de/ST=ba-wue/L=mannheim/O=uni/OU=it/CN=Carl Cert/Email=cert@home.de --- No client certificate CA names sent --- SSL handshake has read 1276 bytes and written 250 bytes --- New, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA Server public key is 1024 bit SSL-Session: Protocol : TLSv1 Cipher : EDH-RSA-DES-CBC3-SHA Session-ID: 586D9F47CF9CB84FA91FF2334681AEEC16A8F610ED1AE85D5F14306E88E558DA Session-ID-ctx: Master-Key: 74809B2EC2D67F6DEA5721CFE3CE88E5D03A923BD3E95452E2FC7DC3CE5455343547B7AF3F0EB1A717C43D704EB822D9 Key-Arg : None Start Time: 1053985095 Timeout : 300 (sec) Verify return code: 18 (self signed certificate) --- Hallo Wie gehts? DONE SSL3 alert write:warning:close notify
JSSE ist im JDK 1.4 enthalten.
JSSE basiert auf der Java Cryptography Architecture (JCA).
JSSE unterstützt SSL 3.0 und TLS 1.0.
Die wichtigsten Klassen sind
SSLSocket
und SSLServerSocket
,
die wie
Socket
und ServerSocket
verwendet werden können.
JSSE ist u.A. in folgenden Packeten enthalten:
javax.net
,
javax.net.ssl
und
javax.secutity.certs
HelloWorldSSLClient:
import java.io.IOException; import java.net.Socket; import javax.net.SocketFactory; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.SSLSocket; public class HelloWorldSSLClient { static int port = 40000; static String host = "localhost"; static String msg = "Hallo Welt"; public static void main(String[] args) { if (args.length > 0) host = args[0]; if (args.length > 1) msg = args[1]; Integer x = new Integer(4711); SocketFactory sf = SSLSocketFactory.getDefault(); try { Socket s = sf.createSocket( host, port ); System.out.println("Client connected to Server"); SocketChannel c = new SocketChannel(s); c.send( msg ); c.send( x ); c.close(); } catch (IOException e) { System.out.println("IOException "+e); } } }
HelloWorldSSLServ:
import java.io.IOException; import java.net.Socket; import java.net.ServerSocket; import javax.net.ServerSocketFactory; import javax.net.ssl.SSLServerSocketFactory; import javax.net.ssl.SSLServerSocket; public class HelloWorldSSLServ { static int port = 40000; public static void main(String[] args) { SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault(); String[] dcs = ssf.getDefaultCipherSuites(); //String[] dcs = ssf.getSupportedCipherSuites(); System.out.print("\nciphers = "); for (int i = 0; i < dcs.length; i++ ) { System.out.print(dcs[i]); if ( i < dcs.length-1 ) { System.out.print(", "); } } System.out.println(".\n"); try { ServerSocket so = ssf.createServerSocket( port ); System.out.println("Server startet on port "+port);11 while (true) { System.out.println("waiting for connection ... "); Socket s = so.accept(); System.out.println("new connection from " + s.getInetAddress() ); SocketChannel c = new SocketChannel(s); System.out.println("Object Stream created "); Object o = c.receive(); System.out.println("message 1 " + o); o = c.receive(); System.out.println("message 2 " + o); c.close(); } } catch (IOException e) { System.out.println("IOException "+e); } catch (ClassNotFoundException e) { System.out.println("ClassNotFoundException "+e); } } }
Starten des Servers:
java -Djavax.net.ssl.keyStore=inetserver.keys -Djavax.net.ssl.keyStorePassword=internet HelloWorldSSLServ ciphers = SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA. Server startet on port 40000 waiting for connection ... new connection from /127.0.0.1 Object Stream created message 1 Hallo Welt message 2 4711 waiting for connection ... new connection from /127.0.0.1 Object Stream created message 1 Hallo Welt message 2 4711
Starten des Clients:
java -Djavax.net.ssl.trustStore=client.trusts -Djavax.net.ssl.trustStorePassword=internet HelloWorldSSLClient Client connected to Server
keytool Optionen:
-certreq [-v] [-alias <Alias>] [-sigalg <Sigalg>] [-file <csr_Datei>] [-keypass <Keypass>] [-keystore <Keystore>] [-storepass <Storepass>] [-storetype <Storetyp>] [-provider <Provider_Klassenname>] ... -delete [-v] -alias <Alias> [-keystore <Keystore>] [-storepass <Storepass>] [-storetype <Storetyp>] [-provider <Provider_Klassenname>] ... -export [-v] [-rfc] [-alias <Alias>] [-file <Zert_Datei>] [-keystore <Keystore>] [-storepass <Storepass>] [-storetype <Storetyp>] [-provider <Provider_Klassenname>] ... -genkey [-v] [-alias <Alias>] [-keyalg <Schlüsselalg>] [-keysize <Schüsselgröße>] [-sigalg <Sigalg>] [-dname <dname>] [-validity <GültigTage>] [-keypass <Schlüsselpass>] [-keystore <Keystore>] [-storepass <Storepass>] [-storetype <Storetyp>] [-provider <Provider_Klassenname>] ... -help -identitydb [-v] [-file <idb_Datei>] [-keystore <Keystore>] [-storepass <Storepass>] [-storetype <Storetyp>] [-provider <Provider_Klassenname>] ... -import [-v] [-noprompt] [-trustcacerts] [-alias <Alias>] [-file <Zert_Datei>] [-keypass <Schlüsselpass>] [-keystore <Keystore>] [-storepass <Storepass>] [-storetype <Storetyp>] [-provider <Provider_Klassenname>] ... -keyclone [-v] [-alias <Alias>] -dest <Ziel_Alias> [-keypass <Schlüsselpass>] [-new <neu_Schlüsselpass>] [-keystore <Keystore>] [-storepass <Storepass>] [-storetype <Storetyp>] [-provider <Provider_Klassenname>] ... -keypasswd [-v] [-alias <Alias>] [-keypass <alt_Schlüsselpass>] [-new <neu_Schlüsselpass>] [-keystore <Keystore>] [-storepass <Storepass>] [-storetype <Storetyp>] [-provider <Provider_Klassenname>] ... -list [-v | -rfc] [-alias <Alias>] [-keystore <Keystore>] [-storepass <Storepass>] [-storetype <Storetyp>] [-provider <Provider_Klassenname>] ... -printcert [-v] [-file <Zert_Datei>] -selfcert [-v] [-alias <Alias>] [-sigalg <Sigalg>] [-dname <dname>] [-validity <GültigTage>] [-keypass <Schlüsselpass>] [-keystore <Keystore>] [-storepass <Storepass>] [-storetype <Storetyp>] [-provider <Provider_Klassenname>] ... -storepasswd [-v] [-new <neu_Storepass>] [-keystore <Keystore>] [-storepass <Storepass>] [-storetype <Storetyp>] [-provider <Provider_Klassenname>] ...
Erzeugen eines Keystores inetserver.keys
und eines Server-Keys:
keytool -genkey -alias inetserv -keyalg RSA -validity 60 -keystore inetserver.keys Geben Sie das Keystore-Passwort ein: internet Wie lautet Ihr Vor- und Nachname? [Unknown]: Karl Dall Wie lautet der Name Ihrer organisatorischen Einheit? [Unknown]: Internet-Technologien Wie lautet der Name Ihrer Organisation? [Unknown]: Universitaet Mannheim Wie lautet der Name Ihrer Stadt oder Gemeinde? [Unknown]: Mannheim Wie lautet der Name Ihres Bundeslandes oder Ihrer Provinz? [Unknown]: Wie lautet der Landescode (zwei Buchstaben) für diese Einheit? [Unknown]: de Ist CN=Karl Dall, OU=Internet-Technologien, O=Universitaet Mannheim, L=Mannheim, ST=Unknown, C=de richtig? [Nein]: ja Geben Sie das Passwort für <inetserv> ein. (EINGABETASTE, wenn Passwort dasselbe wie für Keystore):
Anzeigen des Inhalts des Keystores:
keytool -list -v -keystore inetserver.keys Geben Sie das Keystore-Passwort ein: internet Keystore-Typ: jks Keystore-Provider: SUN Ihr Keystore enthält 1 Eintrag/-äge. Aliasname: inetserv Erstellungsdatum: 06.06.2004 Eintragstyp: keyEntry Zertifikatskettenlänge: 1 Zertifikat[1]: Eigentümer: CN=Karl Dall, OU=Internet-Technologien, O=Universitaet Mannheim, L=Mannheim, ST=Unknown, C=de Aussteller: CN=Karl Dall, OU=Internet-Technologien, O=Universitaet Mannheim, L=Mannheim, ST=Unknown, C=de Seriennummer 40c336ed Gültig ab: Sun Jun 06 17:23:25 CEST 2004 bis: Thu Aug 05 17:23:25 CEST 2004 Zertifikatfingerabdrücke: MD5: 2C:E2:49:FE:30:C1:D6:21:D7:F3:C3:97:48:46:32:C7 SHA1: CB:2E:96:F1:2E:A6:00:BB:F2:37:15:27:79:ED:96:8F:88:A6:A2:56
Exportieren des Zertifikats für den Server:
keytool -export -alias inetserv -keystore inetserver.keys -rfc -file server.certs Geben Sie das Keystore-Passwort ein: internet Zertifikat in Datei <server.certs> gespeichert.
Anzeigen des Zertifikats als Textdatei:
cat server.certs -----BEGIN CERTIFICATE----- MIICgDCCAekCBEDDNu0wDQYJKoZIhvcNAQEEBQAwgYYxCzAJBgNVBAYTAmRlMRAwDgYDVQQIEwdV bmtub3duMREwDwYDVQQHEwhNYW5uaGVpbTEeMBwGA1UEChMVVW5pdmVyc2l0YWV0IE1hbm5oZWlt ... eZqjMBRqfVa0P45SwmbqBNk= -----END CERTIFICATE-----
Anzeigen des Zertifikats mit OpenSSL:
openssl x509 -noout -text -in server.certs Certificate: Data: Version: 1 (0x0) Serial Number: 1086535405 (0x40c336ed) Signature Algorithm: md5WithRSAEncryption Issuer: C=de, ST=Unknown, L=Mannheim, O=Universitaet Mannheim, OU=Internet-Technologien, CN=Karl Dall Validity Not Before: Jun 6 15:23:25 2004 GMT Not After : Aug 5 15:23:25 2004 GMT Subject: C=de, ST=Unknown, L=Mannheim, O=Universitaet Mannheim, OU=Internet-Technologien, CN=Karl Dall Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:e9:74:a8:5a:27:9e:03:6f:bc:12:18:2d:8c:2a: ... b1:b8:18:9a:f0:0f:d5:10:37 Exponent: 65537 (0x10001) Signature Algorithm: md5WithRSAEncryption 58:8d:c8:6e:2b:3c:44:6b:45:e6:c3:65:41:7e:6e:0f:b0:5f: ... 04:d9
Anzeigen des Zertifikats mit Java:
keytool -printcert -file server.certs Eigentümer: CN=Karl Dall, OU=Internet-Technologien, O=Universitaet Mannheim, L=Mannheim, ST=Unknown, C=de Aussteller: CN=Karl Dall, OU=Internet-Technologien, O=Universitaet Mannheim, L=Mannheim, ST=Unknown, C=de Seriennummer 40c336ed Gültig ab: Sun Jun 06 17:23:25 CEST 2004 bis: Thu Aug 05 17:23:25 CEST 2004 Zertifikatfingerabdrücke: MD5: 2C:E2:49:FE:30:C1:D6:21:D7:F3:C3:97:48:46:32:C7 SHA1: CB:2E:96:F1:2E:A6:00:BB:F2:37:15:27:79:ED:96:8F:88:A6:A2:56
Erzeugen eines Truststores client.trusts
für den Client und importieren des
Server Zertifikats:
keytool -import -alias inetserv -file server.certs -keystore client.trusts Geben Sie das Keystore-Passwort ein: internet Eigentümer: CN=Karl Dall, OU=Internet-Technologien, O=Universitaet Mannheim, L=Mannheim, ST=Unknown, C=de Aussteller: CN=Karl Dall, OU=Internet-Technologien, O=Universitaet Mannheim, L=Mannheim, ST=Unknown, C=de Seriennummer 40c336ed Gültig ab: Sun Jun 06 17:23:25 CEST 2004 bis: Thu Aug 05 17:23:25 CEST 2004 Zertifikatfingerabdrücke: MD5: 2C:E2:49:FE:30:C1:D6:21:D7:F3:C3:97:48:46:32:C7 SHA1: CB:2E:96:F1:2E:A6:00:BB:F2:37:15:27:79:ED:96:8F:88:A6:A2:56 Diesem Zertifikat vertrauen? [Nein]: ja Zertifikat wurde zu Keystore hinzugefügt.
Anzeigen des Inhalts des Truststores:
keytool -list -v -keystore client.trusts Geben Sie das Keystore-Passwort ein: internet Keystore-Typ: jks Keystore-Provider: SUN Ihr Keystore enthält 1 Eintrag/-äge. Aliasname: inetserv Erstellungsdatum: 06.06.2004 Eintragstyp: trustedCertEntry Eigentümer: CN=Karl Dall, OU=Internet-Technologien, O=Universitaet Mannheim, L=Mannheim, ST=Unknown, C=de Aussteller: CN=Karl Dall, OU=Internet-Technologien, O=Universitaet Mannheim, L=Mannheim, ST=Unknown, C=de Seriennummer 40c336ed Gültig ab: Sun Jun 06 17:23:25 CEST 2004 bis: Thu Aug 05 17:23:25 CEST 2004 Zertifikatfingerabdrücke: MD5: 2C:E2:49:FE:30:C1:D6:21:D7:F3:C3:97:48:46:32:C7 SHA1: CB:2E:96:F1:2E:A6:00:BB:F2:37:15:27:79:ED:96:8F:88:A6:A2:56
HTTP over SSL/TLS
SMTP mit STARTTLS
SMTP over SSL/TLS
POP mit STLS
IMAP mit STARTTLS
Kerberos und AFS
MIME-SEC
Simple Authentication and Security Layer (SASL)
RFC 2222, 1997
Generic Security Service Application Program Interface (GSSAPI)
RFC 2078, 1997
Java Cryptography Architecture
Java Cryptography Extensions
OpenSSH mit OpenSSL
Teil 1 erstellt unter Verwendung eines Seminarvortrags von Robert Schulz.
© Universität Mannheim, Rechenzentrum, 1998-2007.
Heinz KredelLast modified: Sun Jan 28 13:27:13 CET 2007