SNI
Klassischerweise erlaubt die SSL-Protokollschicht pro IP-Adresse und TCP-Port nur ein Zertifikat. Wenn also mehrere (virtuelle) Hosts unter der selben IP-Adresse erreichbar sind, wie es bei Websites üblich ist, kann der im Zertifikat fest eingetragene Hostname nur für eine einzige Adresse gültig sein. Alle anderen Adressen erhalten das für sie unpassende Zertifikat.
Server Name Indication
Für dieses Problem gibt es seit kurzer Zeit eine Lösung: Server Name Indication (beschrieben in RFC 3546). Diese Erweiterung des TLS-Protokolls ermöglicht, vor Übertragung des Zertifikats den gewünschten Hostname zu übertragen. Damit wird es möglich, pro virtuellen Host ein Zertifikat zu hinterlegen.
Unterstützung Serverseitig
OpenSSL unterstützt SNI seit der Version 0.9.8f. GnuTLS unterstützt SNI schon deutlich länger, seit 0.5.10. Die Webserver Apache und lighttpd unterstützen SNI ebenfalls.
Unterstützung Browser
Mozilla Firefox und Opera unterstützen SNI schon länger problemlos, Internet Explorer erst ab Version 7. Ebenso unterstützen fast alle Mozilla-basierenden Browser SNI (bspw. Epiphany). Konqueror unterstützt SNI bislang überhaupt nicht, es wird vermutlich mit KDE 4.1 kommen. Ebenso unterstützt Safari bislang kein SNI.
Insbesondere die Unterstützung durch den aktuellen Internet-Explorer lässt hoffen, dass diese Technik in naher Zukunft großflächig eingesetzt werden kann, sobald von Safari und Konqueror die nächsten Versionen erscheinen.
Weitere Software
Theoretisch lässt sich SNI auch für andere Systeme außer http, die virtuelle Hosts nutzen, einsetzen, etwa Jabber/XMPP. Über den Stand der Unterstützung ist uns noch nichts bekannt.