Zum Hauptinhalt springen

RFC 2818 - HTTP Over TLS (HTTPS) - Praktische Beispiele

Praktische Beispiele​

Vollständige HTTPS-Verbindung​

Client-Operationen:

1. URI analysieren: https://www.example.com/page.html
→ Hostname: www.example.com
→ Port: 443 (Standard)

2. TCP-Verbindung zu www.example.com:443

3. TLS-Handshake:
ClientHello →
← ServerHello + Certificate
Hostname im Zertifikat verifizieren
...Handshake abgeschlossen...

4. Verschlüsselte HTTP-Anfrage senden:
GET /page.html HTTP/1.1
Host: www.example.com

5. Verschlüsselte HTTP-Antwort empfangen:
HTTP/1.1 200 OK
Content-Length: 1234
...

6. Verbindung schließen:
closure_alert senden
TCP-Verbindung schließen

Zertifikatsverifizierungsbeispiel​

# Python-Beispiel (konzeptionell)
import ssl
import socket

# SSL-Kontext erstellen
context = ssl.create_default_context()

# Zum Server verbinden
sock = socket.create_connection(('www.example.com', 443))
ssock = context.wrap_socket(sock, server_hostname='www.example.com')

# wrap_socket verifiziert automatisch:
# 1. Zertifikatskette ist gültig
# 2. Hostname stimmt überein
# 3. Zertifikat ist nicht abgelaufen

# Zertifikatsinformationen abrufen
cert = ssock.getpeercert()
print(f"Subject: {cert['subject']}")
print(f"Issuer: {cert['issuer']}")
print(f"SANs: {cert.get('subjectAltName', [])}")

Häufige Fehlerbehandlung​

Fehler 1: Zertifikat-Hostname stimmt nicht überein
Certificate Hostname Mismatch
- Zertifikat: *.example.com
- Zugriff: www.different.com
→ Verbindung beenden oder Benutzer warnen

Fehler 2: Zertifikat abgelaufen
Certificate Expired
- Not After: 2023-12-31
- Aktuell: 2024-01-01
→ Verbindung ablehnen

Fehler 3: Selbstsigniertes Zertifikat
Self-Signed Certificate
- Nicht in vertrauenswürdiger CA-Liste
→ Benutzer warnen oder ablehnen

Fehler 4: Unvollständige Zertifikatskette
Incomplete Certificate Chain
- Zwischenzertifikat fehlt
→ Kann nicht verifizieren, Verbindung ablehnen