Pound-Varnish-LAMP Stack

Varnish an sich unterstützt kein https, sondern kann nur unverschlüsselte Anfragen verwenden. Um mit Varnish auch verschlüsselte Websites (https) betreiben zu können, kann Pound als Reverse-Proxy vor dem Varnish geschaltet werden.

Ein Request durchläuft dann: Pound (Port 80, 443) -> Varnish (Port 8080) -> Apache (Port 8085), …)

Pound entschlüsselt den Request (an dieser Stelle sind auch die SSL-Zertifikate installiert) und reicht die entschlüsselte Anfrage dann an Varnish, … weiter.

Zudem unterstützt Pound IPv6 und SNI (Server Name Indication).

Obwohl Pound HTTPS entschlüsselt, wird pro Zertifikat eine eigene IP auf dem Server benötigt, da die Zertifikate anhand der IP-Adresse unterschieden werden. Das ist keine Einschränkung von Pound, sondern bedingt durch die HTTPS-Architektur.

Is there any way to tell pound to handle the ssl certificates based on the requested domain in the request header?

No

Quite often we get inquiries about Pound's ability to do virtual hosting with HTTPS. In order to lay this matter to rest, let me say:

HTTPS does not allow virtual hosting

This is not a limitation of Pound, but of HTTPS - no Web server or proxy are able to do it due to the nature of the beast.

Quelle: Pound Mailing List

Man kann zwar auch mehrere Zertifikate unter einer IP-Adresse verwenden, ist dann aber auf SNI angewiesen. Dies unterstützt jedoch noch nicht „jeder“ Browser. Siehe Kompatbilitäts-Liste bei Wikipedia: Browser with support for TLS server name indication.

Anhand der Liste ist es derzeit noch schwer, eine Empfehlung auszusprechen, ob SNI im allgemeinen schon verwendet werden kann.

Wer jedoch auf eine hohe Kompatibilität bei seinen Website-Besuchern angewiesen ist, sollte vorsichtshalber noch pro Zertifikat eine eigene IP-Adresse verwenden.