Namebased SSL Apache SNI
Ab Apache v2.2.12 and OpenSSL v0.9.8 wird SNI unterstützt, womit auch mit mod_ssl mehrere SSL-Virtualhosts unter einer einzigen IP gehostet werden können. Jeder VirtualHost hat dabei sein eigenes Zertifikat. Voraussetzung dafür ist, dass die Clients (z. B. Browser) SNI unterstützen. Windows XP IE wird beispielsweise nicht unterstützt. Möchte man SNI einsetzen, sollte man das beachten.
Voraussetzungen
- mod_ssl
- apache2 2.2.12+
- openssl 0.9.8+
Falls mod_ssl noch nicht aktiviert ist, kann dies mit folgendem Befehl tun.
a2enmod ssl
Anschließend ist der apache2 neuzustarten.
Virtualhosts
Ich erkläre es hier exemplarisch an zwei virtuellen Hosts, die jeweils unterschiedliche Domains und Zertifikate haben.
VirtualHost me.awesome.de:
NameVirtualHost *:443 <VirtualHost *:443> ServerName me.awesome.de DocumentRoot /var/www/htdocs/me.awesome.de/ SSLEngine on SSLCertificateFile /etc/apache2/ssl-certs/me.awesome.de/me.awesome.de.crt SSLCertificateKeyFile /etc/apache2/ssl-certs/me.awesome.de/me.awesome.de.key ErrorLog /var/log/apache2/me_awesome_de_error.log CustomLog /var/log/apache2/me_awesome_de_access.log common </virtualhost>
Hinweis: Man beachte NameVirtualHost *:443. Dieser Eintrag ist zwingend in einem VirtualHost anzugeben.
VirtualHost me.thebest.com:
<VirtualHost *:443> ServerName me.thebest.com DocumentRoot /var/www/htdocs/me.thebest.com/ SSLEngine on SSLCertificateFile /etc/apache2/ssl-certs/me.thebest.com/me.thebest.com.crt SSLCertificateKeyFile /etc/apache2/ssl-certs/me.thebest.com/me.thebest.com.key ErrorLog /var/log/apache2/me_thebest.com_error.log CustomLog /var/log/apache2/me_thebest.com_access.log common </virtualhost>
Anschließend VirtualHosts jeweils mit a2ensite aktivieren und einen servce apache2 reload durchführen. Von einem SNI-fähigen Client sollten die Seiten ohne Warnungen verfügbar sein.
Quellen
https://www.digicert.com/ssl-support/apache-multiple-ssl-certificates-using-sni.htm