Stammtisch: Nachlese vom 8. April 2010
Bei dem Vortrag von Sebastian über SQL‐Injections war die Frage aufgekommen, ob HTTP StartTLS unterstützt. Direkt im RFC 2616 ist dies nicht vorgesehen, aber es gibt den RFC 2817, der genau einen solchen Mechanismus beschreibt, dass eine bestehende HTTP‐Verbindung verschlüsselt werden kann, so wie es bei SMTP und IMAP geht. Bei einer HTTP-1.1‐Verbindung kann der Client und auch der Server eine Verschlüsselung vorschlagen oder erzwingen. Somit können HTTP‐Inhalte nicht nur per HTTPS, welches über Port 443 und nicht 80 arbeitet, verschlüsselt übertragen werden, sondern auch über Port 80 und auch gezielt, zum Beispiel nur für POST‐Anweisungen.
Diese Technik wird zwar vom Apache‐Webserver unterstützt, allerdings sind dafür einige besondere Einstellungen zu treffen, weswegen kein Server diese Technik aktiviert hat:
for host in www.{{google,lug-jena,thur,yahoo}.de,{apache,debian}.org}
do
echo $host:
print -l 'OPTIONS * HTTP/1.1' "Host: $host" 'Upgrade: TLS/1.0'
'Connection:
'OPTIONS * HTTP/1.1' "Host: $host" 'Connection: Close' '' \
| nc -C $host http \
| sed '/^\r$/q'
done
Noch schlechter sieht es bei den Browsern aus. Jörg hat nichts gefunden, dass einer der großen Browser die Technik für TLS unterstützt, aber für Firefox, Iceweasel und Chromium gibt es entsprechende Bugreports, die aktiv ignoriert werden. (Der IE 7 kann's auch nicht).