it-swarm.com.de

Sendet der Server beim SSL-Server-Handshake auch ein CA-Zertifikat

Sendet der Server im Handshake TCP SSL-Server) auch CA-Zertifikate? Muss der Server alle CA-Zwischenzertifikate im Server Hello senden?

15
Rahul_cs12

Der Server sendet kein Zertifikat in der Nachricht ServerHello. Es sendet Zertifikate in der treffend benannten Nachricht Certificate .

Wie im Standard angegeben, soll der Server eine vollständige, geordnete Kette des Zertifikats senden, beginnend mit dem eigentlichen Zertifikat des Servers und einem Zertifikat für das Zwischenzertifizierungsstelle, die es ausgestellt hat, dann ein Zertifikat für die Zwischenzertifizierungsstelle, die das vorherige Zwischenzertifizierungsstellenzertifikat ausgestellt hat, und so weiter. Am Ende der Kette hat der Server die Möglichkeit, das Stammzertifizierungsstellenzertifikat einzuschließen oder nicht einzuschließen. Wenn die Kette für den Client von Nutzen sein soll, muss der Client den Stamm bereits kennen und benötigt daher keine neue Kopie davon. Der relevante Text in der Norm lautet:

   certificate_list
      This is a sequence (chain) of certificates.  The sender's
      certificate MUST come first in the list.  Each following
      certificate MUST directly certify the one preceding it.  Because
      certificate validation requires that root keys be distributed
      independently, the self-signed certificate that specifies the root
      certificate authority MAY be omitted from the chain, under the
      assumption that the remote end must already possess it in order to
      validate it in any case.

das ist klar genug.

Beachten Sie, dass die Zertifikatkette im Allgemeinen nicht eindeutig ist. Ein bestimmtes Serverzertifikat kann über mehrere, möglicherweise viele Zertifikatketten validiert werden. Dies geschieht natürlich bei einer Zwischenerneuerung des CA-Zertifikats (da das neue CA-Zertifikat zu einem bestimmten Zeitpunkt gültig ist und das alte noch gültig ist. Wenn sie also denselben Schlüssel verwenden, sind sie austauschbar). Im Fall einer Kreuzzertifizierung zwischen verschiedenen Zertifizierungsstellen können die verschiedenen Ketten für ein bestimmtes Serverzertifikat sogar zu einer unterschiedlichen Stammzertifizierungsstelle führen. Die Folge ist, dass der SSL/TLS-Server zwar eine "gültige Kette" senden soll, diese Kette jedoch möglicherweise nicht unbedingt diejenige ist, die der Client bevorzugt hätte.

Im Allgemeinen versuchen SSL/TLS-Clients, die vom Server empfangene Serverzertifikatskette zu überprüfen. Wenn diese Kette dem Kunden nicht gefällt, hängt das Verhalten des Kunden von der Implementierung ab: Einige Kunden geben einfach auf; Andere (insbesondere Windows/Internet Explorer) versuchen, eine andere Kette mit lokal bekannter Zwischenzertifizierungsstelle zu erstellen und Zertifikate von der URL herunterzuladen, die in anderen Zertifikaten gefunden wurde (die Erweiterung "Zugriff auf Berechtigungsinformationen").

33
Thomas Pornin