Könnte mir jemand den Unterschied zwischen diesen Zertifikaten auf vereinfachte Weise erklären? Ich habe einige Artikel gelesen, aber es hört sich so an, als ob sie den gleichen Job machen, nämlich viele Domänen mit einem Zertifikat zu verschlüsseln.
ssl
sni
subject-alternative-names
AFA Med
quelle
quelle
Antworten:
SAN (Subject Alternative Name) ist Teil der X509-Zertifikatspezifikation , in der das Zertifikat ein Feld mit einer Liste von alternativen Namen enthält, die auch für den Betreff gültig sind (zusätzlich zum einzelnen Common Name / CN). Diese Feld- und Platzhalternamen sind im Wesentlichen die beiden Möglichkeiten, ein Zertifikat für mehrere Namen zu verwenden.
SNI (Server Name Indication) ist eine TLS-Protokollerweiterung , die einer Art TLS-Protokoll entspricht, das dem HTTP-Host-Header entspricht. Wenn ein Client dies sendet, kann der Server das richtige Zertifikat auswählen, das dem Client präsentiert werden soll, ohne dass auf der Serverseite separate IP-Adressen verwendet werden müssen (ähnlich wie der HTTP-Host-Header häufig für einfaches HTTP verwendet wird).
Beachten Sie, dass SNI nicht im Zertifikat enthalten ist und tatsächlich das Gegenteil von dem bewirkt, was in der Frage gefordert wird. Es vereinfacht das Vorhandensein vieler Zertifikate, da für viele Dinge nicht ein einziges Zertifikat verwendet wird.
Andererseits hängt es stark von der Situation ab, welcher Weg tatsächlich vorzuziehen ist. Beispielsweise ist die Frage, nach der gefragt wird, mit ziemlicher Sicherheit nicht das, was Sie tatsächlich wollen, wenn Sie Zertifikate für verschiedene Entitäten benötigen.
quelle
SAN steht für Subject Alternative Name und ist eine x509-Zertifikateigenschaft. SNI ist eine Funktion, die der SSL / TLS-Client unterstützen kann, also eine völlig andere Entität.
Wenn Sie ein Zertifikat mit SAN verwenden , können Sie mehrere HTTPS-fähige Sites unter einer IP-Adresse hosten, auch wenn der Client das SNI nicht unterstützt . In diesem Fall verfügen Sie über ein Zertifikat für alle Ihre Sites. Dieses Zertifikat muss alle Site-Namen (
ServerName
s oderServerAlias
es in den Apache-Koordinaten oderserver_name
in nginx) als SANs enthalten . Dies ist eine Teilmenge eines Legacy-Ansatzes, der die "eine HTTPS-fähige Site auf jeder separaten IP-Adresse" erweitert hat. Derzeit bleiben nur große CDNs bei SAN .Mit SNI können Sie auch mehrere HTTPS-fähige Sites auf einer IP hosten. Sie verfügen über ein separates x509-Zertifikat für jede Site und keiner dieser Sites erwähnt andere Site-Namen in ihrer SAN- Eigenschaft, aber TLS-Clients (dh Browser und Konsolen-Clients wie
wget
odercurl
). muss SNI unterstützen . Dies ist ein moderner Ansatz, da das letzte Betriebssystem, das SNI nicht standardmäßig unterstützt , Windows XP mit IE 6.x war, wenn ich mich richtig erinnere. Heutzutage kann man das sehen SAN - Eigenschaft , wenn Sie den Kauf Wildcard - Zertifikat - für ein solches Zertifikat Beispiel für*.foobar.com
einen enthalten Common Name von*.foobar.com
und ein SAN vonfoobar.com
.quelle
Dadurch werden zwei Teile des Zertifikatprozesses gemischt.
Ein SAN ist ein alternativer Antragstellername. Auf diese Weise können Sie ein Zertifikat für mehrere Domänen erstellen. Sie fügen einfach die anderen Domänen, für die Sie ein Zertifikat möchten, dem SAN-Feld im Zertifikat hinzu. Der Browser akzeptiert dann auch die Gültigkeit dieser Domains.
SNI ist Server Name Indication und ist Teil von SSL. Sie können mehrere SSL-Sites auf einer einzigen IP hosten, da der gewünschte Servername mit dem SSL-Handshake gesendet wird und der Server das richtige Zertifikat für die Antwort auswählen kann.
quelle
Hier eine (möglicherweise) besser lesbare Antwort:
SNI wird auf der Client-Seite durchgeführt und teilt dem TLS-Stapel mit, dass ich mit einem Server sprechen möchte, dessen Name [Server X] ist. Server sieht diese [Server X] Zeichenfolge und antwortet mit einem entsprechenden Zertifikat. Ein praktisches Beispiel ist, wenn ein einzelner Server Datenverkehr für mehrere Domänen bereitstellen muss. Es ist auch nützlich, wenn der Client eine IP verwendet hat (um Verzögerungen bei der DNS-Suche zu vermeiden), das Zertifikat CN die IP jedoch nicht erwähnt.
SAN ist eine Liste von "Auch bekannt als" in Zertifikaten. Auf diese Weise kann der Server ein einziges Zertifikat für viele Namen verwenden. Man kann dem gleichen Zertifikat viele Domänen und sogar eine Liste von IPs hinzufügen.
Wie Sie sehen, überschneiden sich die Dinge. Die Wahl zwischen einem oder beiden hängt davon ab, wo man die Kontrolle hat. Einige Clients erkennen Namen in SAN möglicherweise nicht und die einzige Möglichkeit, diese zu adressieren, besteht darin, ein auf SNI basierendes entsprechendes Zertifikat bereitzustellen. Es gibt Szenarien, in denen der Server eine API für ein einzelnes Zertifikat bereitstellt oder der Client keine SNI sendet. In diesen Fällen ist SAN der einzige Ausweg.
Mein Unternehmen nutzt beides. Sie bieten Flexibilität und erleichtern die Rückwärts- und Vorwärtskompatibilität.
quelle