SSL und TLS


Kryptographie und TCP/IP

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

Transportschicht

Netzwerkschicht / Vermittlungsebene


Secure Socket Layer (SSL) und Tansport Layer Security (TLS)

Ziele

Vorteile

für alle TCP/IP Anwendungen nutzbar
leichter zu benutzen und zu verwalten
effizient

Nachteile

evtl. Probleme mit Firewalls
erweiterbar nur mit Rücksicht auf TCP/IP

SSL in TCP/IP

SSL in TCP/IP

SSL Protokoll liegt zwischen der Transportschicht und der Anwendungsschicht

SSL - Aufbau

SSS - Aufbau

SSL besteht aus zwei Schichten plus Statusinformationen

Steuerprotokolle

Recordprotokoll

Status

SSL - Sessions

SSL Verbindungen
 
Ablauf einer Verbindung

SSL - Verbindungsaufbau

durch SSL Handshake Protokoll

SSL - Cipher Suites

SSL - Fehlerbehandlung

SSL Alert Protokoll behandelt folgende Fehlerarten

=> Fehlerfall: Nachricht und Verbindungsabbruch

SSL - Implementierungen

Probleme:


Zertifikate nach X.509

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:

Subject: Individuum
Distinguished Name, Public Key
Issuer: Ausgabestelle
Distinguished Name, Signature
Period of Validity: Geltungsdauer
Not Before Date, Not After Date
Administrative Infos:
Certificate Version, Serial Number
Extended Infos: Zusatzinformationen
Basic Constraints, Netscape Flags, etc.
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

OpenSSL bietet eine offene Implementierung von SSL und TLS.

Arbeitsschritte mit SSL/TLS

Die gewünschten Schlüssel kann man sich mit Hilfe der OpenSSL Kommandozeilen Tools erzeugen.

  1. Erzeugen eines eigenen Schlüsselpaars mit öffentlichem und privatem Teil

  2. Erzeugen einer Anforderung zur Zertifizierung

  3. Zertifizieren von Schlüsseln

  4. Testen der verschlüsselten Kommunikation mit dem OpenSSL Server oder Client

  5. Einsatz der Zertifikate in Servern (z.B. Web-Server mit HTTPS)

  6. Einsatz der Zertifikate in Browsern (auch über HTTPS)

Beispiel Laden eines DFN Zertifikates in den Browser von der RUM CA.

Erzeugen eines Schlüsselpaares

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:
    ...

Erzeugen einer Anforderung einer Zertifizierung

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

Erzeugen eines selbstsignierten Zertifikats

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 2003 GMT
            Not After : Jun 21 20:12:08 2003 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

Testen von SSL-Verbindungen

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

Ausblick


Teil 1 erstellt unter Verwendung eines Seminarvortrags von Robert Schulz.

© Universität Mannheim, Rechenzentrum, 1998-2003.

Heinz Kredel
Last modified: Tue Jul 1 23:36:17 CEST 2003