Mehrere SSL-Zertifikate unter Apache auf der selben IP-Adresse nutzen

SNI (Server Name Indication) – eine Erweiterung des TLS-Standards (Transport Layer Security) – ermöglicht es, mehrere SSL-Zertifikate auf einer IP-Adresse zu nutzen. Da der verschlüsselte Verbindungsaufbau zwischen Server und Client bereits stattfindet, bevor die angefragte URL übertragen wird, ist es mit TLS 1.0/SSL-Verschlüsselung nicht möglich, mehrere Domains unter einer IP-Adresse zu nutzen (Virtual-Hosts). Der Grund hierfür ist, dass der Server nicht weiß, welches Zertifikat – das immer nur für eine Domain gilt – benutzt werden muss, da die Möglichkeit von Virtual-Hosts bei der Definition von SSL/TLS nicht vorgesehen wurde. Durch SNI wird die Domain im server_name-Parameter bereits beim Verbindungsaufbau übergeben, sodass der Server das passende Zertifikat auswählen und beim TLS-Handshake verwenden kann.

Um dank SNI mehrere SSL-Zertifikate unter Apache auf der selben IP-Adresse zu nutzen, müssen Sie sich zunächst für jede Ihrer Domains ein SSL-Zertifikat erwerben. Hier kann ich Ihnen die Comodo-PositiveSSL-Zertifikate von NameCheap empfehlen, die mit 8,95 US-Dollar pro Jahr sehr günstig sind und Ihre Domains in den Formen www.domain.tld und domain.tld validieren. In diesem Tipp werden beispielhaft die Domains domain1.tld und domain2.tld mit PositiveSSL-Zertifikaten von NameCheap verwendet.

Es ist sinnvoll, die SSL-Virtual-Hosts in eine eigene Datei wie bspw. /etc/apache2/sites-enabled/sni.conf auszulagern. Dort müssen Sie nun für jede gewünschte Domain einen entsprechenden Virtual-Hosts anlegen. Sollte versucht werden, per SSL auf eine Domain zuzugreifen, für die kein SSL-Zertifikat in Ihrer SNI-Liste existiert, wird immer das SSL-Zertifikat des ersten Virtual-Hosts in der Liste verwendet und ggf. in der Fehlermeldung angezeigt.

Ihre sni.conf-Datei könnte bspw. wie folgt aussehen.

NameVirtualHost *:443

SSLStrictSNIVHostCheck off

<VirtualHost *:443>
    ServerName domain1.tld
    ServerAlias *.domain1.tld
    DocumentRoot "/var/www/one"
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/domain1.tld.crt
    SSLCertificateKeyFile /etc/ssl/certs/domain1.tld.key
    SSLCertificateChainFile /etc/ssl/certs/domain1.tld.ca-bundle
    Options -Indexes
</VirtualHost>

<VirtualHost *:443>
    ServerName domain2.tld
    ServerAlias *.domain2.tld
    DocumentRoot "/var/www/two"
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/domain2.tld.crt
    SSLCertificateKeyFile /etc/ssl/certs/domain2.tld.key
    SSLCertificateChainFile /etc/ssl/certs/domain2.tld.ca-bundle
    Options -Indexes
</VirtualHost>

Kommentare



Bitte tippen Sie die 6 Zeichen links ab
Anmelden

0
Zitat aus Wikipedia - SNI:

SNI wird von folgenden Browsern unterstützt:

- Mozilla Firefox 2.0 und neuer
- Opera 8.0 und später (TLS 1.1 muss aktiviert sein)
- Internet Explorer ab Version 7 und ab Windows Vista, unter Windows XP wird es selbst mit Internet Explorer 8 nicht unterstützt
- Google Chrome
- Safari 3.0 und später (ab OS X 10.5.6, ab Windows Vista)


Das eigentliche Problem hierbei ist mal wieder der Internet Explorer, besonders in Verbindung mit Windows XP. Laut der Statistik von W3Counter (April 2012) nutzen immer noch 18,08% aller Internetsurfer Internet Explorer 8 bzw. 7 als Browser und 29,38% immer noch Windows XP. Genau diese Kombination ist problematisch. Selbstverständlich könnte man argumentieren, dass schlussendlich doch nur gerade mal 5,31% aller Internetsurfer noch mit IE8 und Windows XP unterwegs sind, jedoch sind Browserstatistiken immer nur sehr vage. Die ermittelten Werte stimmen meist nur mit den lokalen Statistiken extrem häufig besuchter Websites überein. Nimmt man nun an, dass SSL-Zertifikate im Allgemeinen von Web-Shops usw. benötigt werden, möchte man sicherlich nicht das Risiko eingehen, dass 5 bis 6 von 100 Surfern von der Warnmeldung aufgrund eines falschen Zertifikats verunsichert werden, nur weil man sich keine eigene IP-Adresse leistet. Und die bekommt man im Zuge von (Managed) Virtual Servern oder aber auch besseren Web-Hosting-Angeboten meist dazu.

SNI ist im Moment leider noch nicht guten Gewissens einsetzbar.
fza
»Wenn man etwas nicht weiß, so kann man fragen.
Wenn man etwas nicht kann, so kann man es lernen.
«
— Lü Bu We