Blog via SSL
Ich habe mir jetzt doch mal einen Account bei
StartSSL zusammen geklickt und mir da zwei
Zertifikate für die Domains geholt, unter denen das Blog verfügbar ist. Nachdem
ich nur eine IPv4-Adresse habe, hinter der ich das hosten kann (also ich hätte
schon noch eine über, aber wer weiß, wofür ich die noch brauchen werde),
funktioniert das ganze zwar völlig normal wenn man die Seite als
www.incertum.net
(oder als incertum.net
, die StartSSL-Zertifikate haben
immer einen Subject Alternative Name drin) aufruft - aber falls man sie als
(www.)stefan-foerster.de
ansprechen will, muß die Kombination aus Browser und
Betriebssystem die Erweiterung Server Name Indication
(SNI) unterstützen. Und
damit ist dann Windows XP nativ raus, die dort vorhandene Version von Secure
Channel
kann einfach kein SNI. Alternative Browser wie z.B. Chrome sollten aber
trotzdem funktionieren.
Im IPv6-Land ist das ganze übrigens kein großes Problem: Nachdem man hier IPs im Überfluss hat ist es kein Thema, für die SSL-Hosts, die verschiedene Zertifikate vorweisen sollen, auch jeweils eigene IPv6-Adressen zu verwenden, was ich so auch umgesetzt habe. Sprich, wenn jemand mit einem Windows XP und Internet Explorer IPv6 hat, dann sollte das sogar funktionieren. Um die Konfiguration halbwegs übersichtlich zu halten, habe ich sie soweit wie möglich modularisiert:
- Der Standard-HTTP-Host tut nichts weiter, als eine permanente Umleitung auf
die HTTPS-Seite weiterzugeben. Dabei wird die Variable
$host
und nichtserver_name
benutzt, weil letzere bei mehr als einem Servernamen in der Konfiguration immer auf den ersten Wert matched, nicht aber auf den, den der Browser aufgerufen hat. Beginnt die Konfiguration z.B. mitserver_name www.incertum.net www.stefan-foerster.de ...;
, dann würde eine Umleitung immer aufwww.incertum.net
landen. Das ist dann z.B. bei Safari-Browsern problematisch, wenn die nämlich einen Cookie von einer Domain haben, dann lassen sie sich nicht einfach so auf HTTPS umleiten. - Die Teile der SSL-Konfiguration, die pro Server gleich sind, habe ich in eine
eigene Datei ausgelagert. Das ist im wesentlichen alles ausser dem
Server-Namen, den Zertifikaten und den IPs. Mit der Direktive
listen ... ssl default_server;
legt man übrigens fest, welcher SSL-Host derjenige sein soll, der sein Zertifikat herzeigt, wenn der Browser kein SNI kann. Wie man weiterhin sieht, sind beide IPv6-SSL-Hosts jeweils alsdefault_server
markiert. - Die IPv6-Adressen sind keine Wildcard-Adressen, also benötigt man kein
ipv6only=on
. - Ebenso ist die eigentliche S9Y-Konfiguration für das Blog in ein eigenes File gewandert.
- Die zusätzliche IPv6-Adresse wird ganz normal über die
up/down-Direktiven in
/etc/network/interfaces
konfiguriert (und wie man sieht kommt die Hauptadresse via SLAAC
Das ganze sieht dann so aus:
|
|
Selbstverständlich habe ich die entsprechenden TLSA-Records bereits im DNS hinterlegt. Lasst mich doch bitte wissen, falls ihr nach dieser Änderung Probleme beim Zugriff auf die Seite haben solltet, dann kann ich da gerne entsprechend nachfixen.