Apache, SSL und SNI

War es bisher nicht möglich, pro IP-Adresse eines Webservers mehr als ein Zertifikat zu verwenden, ermöglicht SNI nun genau das. In Apache ist der Patch noch nicht enthalten, aber unter anderem die Gentoo-Distribution ;) ermöglicht das Anwenden des Patches über das +sni USE-Flag.

Zunächst will also ein Apache mit integriertem SNI-Patch installiert werden:

# emerge apache -pv

These are the packages that would be merged, in order:

Calculating dependencies… done!
[ebuild R ] www-servers/apache-2.2.9 USE=”sni ssl -debug -doc -ldap (-selinux) -static -suexec -threads” APACHE2_MODULES=”[...]” 0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB

Nachdem der Apache SNI nun unterstützt, ist noch die Direktive NameVirtualHost anzupassen. Zunächst aktivieren wir aber Unterstützung für SSL und den SSL_DEFAULT_VHOST.

# grep ^APACHE2_OPTS /etc/conf.d/apache2
APACHE2_OPTS=”-D SSL -D NAGIOS -D PHP5 -D SSL_DEFAULT_VHOST”

Da der SSL_DEFAULT_VHOST aktiviert ist, bietet es sich an die Direktive NameVirtualHost für den SSL-Port in der Konfigurationsdatei /etc/apache2/vhosts.d/00_default_ssl_vhost.conf zu setzen.

# vim /etc/apache2/vhosts.d/00_default_ssl_vhost.conf
NameVirtualHost *:443

Nun können analog zu “normalen” VirtualHosts auch VirtualHosts für SSL-Verbindungen angelegt werden. Einziger Wermutstropfen sind die Anforderungen an den Browser – so ist SNI erst in >=Firefox-2, >=Opera-8 und >=IE-7 möglich. Dies schränkt die Verwendbarkeit derzeit noch “etwas” ein, aber je nach Anforderung und Umgebung kann SNI (zukünftig) eine Option sein.

Nachtrag: Ein IE6 unter Windows XP SP3 tut auch, unter SP2 jedoch nicht.

About Tobias Scherbaum

Sysadmin. Autor. Gentoo-Evangelist.
This entry was posted in Sysadmin. Bookmark the permalink.

14 Responses to Apache, SSL und SNI

  1. Martin says:

    Servus,

    habe mit diversen Windows OS’en (Windows XP SP2 und SP3, Windows Vista, Windows 2000) und IE-Versionen (6, 7) rumprobiert mit SNI-Webseiten.

    Hat alles wunderbar getan. Ich konnte keinerlei Probleme feststellen.

    Vielleicht steh ich auch auf dem Schlauch…

    Wie aeussert sich denn das Problem wenn der Browser SNI nicht unterstuetzt?

    Viele Gruesse,
    Martin

  2. Das Problem äußert sich darin, dass der Client in dem Fall nur mit dem ersten Zertifikat “arbeiten” kann, welches der Apache geladen hat.

    Als Beispiel: Ich habe ich SSL+SNI für
    a.scherbaum.info und
    b.scherbaum.info eingerichtet.
    Ein Client, der mit SNI nicht umgehen kann bekommt beim Aufruf von b.scherbaum.info via SSL das Zertifikat für a.scherbaum.info präsentiert.

  3. Martin says:

    Ok dann weiss ich, wo der Hund begraben liegt. Denn die SSL-Zertifikate der SSL-Hosts, die ich fuer die Tests verwendet habe, hoeren alle auf “*.domain.tld”.

    Habe ich so zum ersten Mal gesehen mit dem * und dachte aber, das sei bei SNI so ueblich.

    Nun ist natuerlich die Frage, ob es einen Nachteil gibt mit dieser *-Variante oder ob man da nochmal etwas zusaetzlich beim Apachen einrichten muss. Ansonsten waere es natuerlich zu empfehlen, das einzusetzen.

  4. *.domain.tld ist immer die gleiche Domain? In dem Fall brauchts nicht einmal SNI, das klappt dank dem *. so oder so – wie gesagt ohne SNI und jeglichen anderen Voodoo. Nachteile hat die *.-Variante aus meiner Sicht keine, setze ich auch so problemlos ein.

  5. Martin says:

    Hm das mit *.domain.tld klappt aber nicht, das hier sehe ich dann im error.log, desweiteren mag der Browser das Zertifikat nicht.

    [Tue Aug 12 18:07:56 2008] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)

    Eventuell bin ich auch zu doof, das Zertifikat zu erstellen. Aber nachdem ich ne Anleitung habe, nach der ich immer vorgehe, sollte das eigentlich passen.

  6. Martin says:

    Hm wo ist mein Kommentar von eben hingekommen?

    Wie gesagt, mit *.domain.tld klappt das bei mir nicht, ich bekomme da abstruse Fehlermeldungen sowohl im Browser wie auch beim Apachen.

  7. Spricht dafür, dass an deiner Config irgendwas nicht ganz sauber ist …

  8. Martin says:

    Lag an dem Zertifikat. Irgendwas ging da bei der Erstellung und Signierung durch CAcert schief. Mit einem neuen Zertifikat funktioniert das mit *.domain.tld wunderbar.

    So kann ich erst einmal auf SNI verzichten – was es eh noch nicht im Debianpaket des Apache 2.2 gibt.

  9. Fein :)

    SNI wirds afair auch in Debian Lenny noch nicht haben, siehe
    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=461917

  10. Pingback: Fastanswer » Firefox 3 und die ssl-Zertifikate

  11. Pingback: Firefox 3 und die ssl-Zertifikate | USmith Blog

  12. Pingback: Daniel Lange's blog

  13. Pingback: Verschiedene ssl-Zertifikate an VirtualHosts binden | USmith Blog

  14. Claus says:

    Ich sehe gerade das beim Update auf 2.2.14 das das USE Flag bei Gentoo entfernt wurde oO

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">