Auswahl des SSL-Zertifikats anhand des Host-Headers: Ist dies möglich?


17

Kann ein Webserver basierend auf dem Hostheader der eingehenden Verbindung ein zu verwendendes SSL-Zertifikat auswählen oder sind diese Informationen erst verfügbar, nachdem die SSL-Verbindung hergestellt wurde?

Das heißt, kann mein Webserver auf Port 443 aufgeführt sein und das foo.com-Zertifikat verwenden, wenn https://foo.com angefordert wird, und das bar.com-Zertifikat, wenn https://bar.com angefordert wird oder ich dies versuche ? etwas unmögliches, weil der Server eine SSL-Verbindung herstellen muss, bevor er weiß, was der Client will?

Antworten:


23

Historisch gesehen ist Ihre erste Aussage richtig. Nun gibt es mehrere Möglichkeiten:

  • Ein Platzhalterzertifikat, wenn sich Unterdomänen in derselben Domäne befinden.
  • Ein SAN / UCC-Zertifikat, mit dem alternative Namen für das Zertifikat angegeben werden, sodass mehrere Zertifikate bereitgestellt werden können.
  • SNI wurde eingeführt, um die SSL-Verbindung nach dem Host-Header herzustellen. Dies hat jedoch begrenzte Unterstützung, da es neuer ist.

Dies wurde auf ServerFault mehrfach von mir und anderen beantwortet. Ich würde vorschlagen, nach weiteren Details zu suchen, es sei denn, Sie haben eine bestimmte Frage.


4
Ich ging auf die Suche und konnte nichts finden. Dies ist wahrscheinlich eines der Dinge, nach denen man nur dann leicht suchen kann, wenn man die Antwort kennt, um sie in die Suchbegriffe aufzunehmen. Vielen Dank.
DrStalker

3
Wenn es auf ServerFault bereits Antworten gibt, wäre es nett gewesen, Links zu ihnen zu erstellen.
Bio-Gemüse

serverfault.com/search , @organicveggie.
Warner

3
SNI baut die SSL-Verbindung nicht nach dem Host-Header auf, sondern bezieht den Hostnamen in den SSL-Handshake ein. Nicht, dass es wichtig wäre, wenn Sie kein SSL-Entwickler wären.
Bart van Heukelom

Das Durchsuchen von Serverfault gibt dies als Antwort. Das bedeutet, dass kanonisch alle anderen Fragen Duplikate dieser sind. Der von Ihnen angegebene Link hat keine Ergebnisse.
Ian Boyd


3

Kurze Antwort: nein

HTTP ist in SSL gekapselt , sodass auf alle Informationen zu der Anforderung erst zugegriffen werden kann, nachdem die Verbindung hergestellt wurde. Daher bis ein Zertifikat an den Kunden übergeben wurde. Keine Möglichkeit, Header oder andere verschlüsselte Informationen zu verwenden, da diese immer noch nicht verfügbar sind.

BEARBEITEN: Dies ist der Fall, wenn Sie heutzutage browserübergreifend und vollständig portabel sein möchten . Wie von anderen gesagt, gibt es einige neu aufkommende Methoden, die dies in naher Zukunft ermöglichen.


1

Oder sind diese Informationen erst verfügbar, nachdem die SSL-Verbindung hergestellt wurde?

Richtig. Die SSL-Verbindung wird hergestellt, bevor ein Teil der HTTP-Anforderung (einschließlich Host-Header) gesendet wird.


2
Das ist nicht mehr ganz richtig.
Warner
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.