next up previous contents
Nächste Seite: 4. mod_ssl - Starke Aufwärts: 3. Secure Sockets Layer Vorherige Seite: 3.3 SSL Sub-Protokolle   Inhalt

3.4 Sessions und Datenverbindungen

Wie man sehen kann, ist dieser Handshake sehr aufwendig und führt gerade bei HTTP zu einer spürbaren Verzögerung, da hier jede Anfrage und Antwort eine eigene Verbindung darstellt. Aus diesem Grund unterscheidet SSL zwischen einer sogenannten Session und einer Datenverbindung.

Eine Session ist eine logische Verbindung zwischen einem Client und einem Server, die auch dann noch besteht, wenn zur Zeit keine Daten übertragen werden. Die Dauer einer Session ist abhängig von der jeweiligen Implementierung, und darf maximal 24 Stunden betragen. Während dieser Zeit merken sich Client und Server eine gemeinsame eindeutige Session-ID und den dazugehörigen Master-Key.

Will der Client eine Datenverbindung öffnen, die an eine bestehende Session anknüpft, so übermittelt er in seiner ClientHello Nachricht die entsprechende Session-ID. Der Server überprüft diese Session-ID und verwendet die gleiche ID in seiner ServerHello Nachricht, sofern er bereit ist, an die alte Session anzuknüpfen. Ist er dazu nicht bereit, so generiert er einfach eine neue Session-ID.

Da Client und Server nach wie vor über den gemeinsamen Master-Key verfügen, ist es nicht notwendig weitere Nachrichten auszutauschen. Sie können direkt aus dem Master-Key neue geheime Schlüssel generieren, wobei sie die Zufallszahlen aus den beiden Hello Nachrichten verwenden. Auf diese Weise erhalten sie für diese Datenverbindung andere geheime Schlüssel als beim ersten Mal. Anschließen senden sie wieder ChangeCipherSpec und Finished Nachrichten, womit der verkürzte Handshake abgeschlossen ist.


next up previous contents
Nächste Seite: 4. mod_ssl - Starke Aufwärts: 3. Secure Sockets Layer Vorherige Seite: 3.3 SSL Sub-Protokolle   Inhalt