Ich verfüge über eine interne PKI mit einer gemeinsam genutzten Stammzertifizierungsstelle und mehreren Zwischenzertifizierungsstellen. Wie erreiche ich, dass alles, was von einer Zwischenzertifizierungsstelle ausgestellt wurde, vertrauenswürdig ist?

Ich verfüge über eine interne PKI mit einer gemeinsam genutzten Stammzertifizierungsstelle und mehreren Zwischenzertifizierungsstellen. Wie erreiche ich, dass alles, was von einer Zwischenzertifizierungsstelle ausgestellt wurde, vertrauenswürdig ist?

Situation: Ich habe eine interne PKI mit einer gemeinsamen Stammzertifizierungsstelle und mehreren Zwischenzertifizierungsstellen. Ich möchte, dass alle von Zwischenzertifizierungsstellen ausgestellten Dokumente einander vertrauen. Gibt es eine Möglichkeit, dies zu tun, mit der die meisten Programme/Sprachen zurechtkommen?

Mein gegenwärtiger Kenntnisstand ist, dass diesist nichtleicht möglich, aber ich frage mich, ob mein Verständnis falsch ist.

Wenn wir also Programme haben:

  • funky fresh mit einer Vertrauenskette aus gemeinsam genutzter Wurzel => erster int
  • blitzsauber mit Vertrauenskette der gemeinsamen Wurzel => zweiter int

und ich brauche unbedingt gegenseitiges Vertrauen zwischen diesen beiden. Ist meine einzige Wahl, ein großes CA-Zertifikat mit root=>first und root=>second zu erstellen, die aneinander geheftet sind? Oder kann ich irgendwie einfach eine Kette mit root darin haben?

Könnte ich das alles umgehen, indem ich die Wurzel zum Vertrauensspeicher auf Betriebssystemebene hinzufüge oder, wenn es sich um Container handelt, zum Vertrauensspeicher eines bestimmten Containers? (unter /etc/pki/ca-trust/source/anchorsoder so)

Mein zweiter Gedanke, und vielleicht ist das ein schlechter, aber weil alles intern ist und wir eine CRL haben, können wirnurVerwenden Sie eine Stammzertifizierungsstelle und achten Sie genau auf eine saubere CRL für TLS-Zertifikate anstelle von Zertifikaten auf CA-Ebene.

Gibt es eine Möglichkeit, die Software dazu zu bringen, ihre eigene Kette aufzubauen, wenn ich die CRLs und CAs an bestimmten, irgendwo definierten Endpunkten verfügbar mache?

Antwort1

Ich bin nicht sicher, ob ich Ihre Frage richtig verstehe oder ob Sie das Konzept richtig verstehen, aber

  • Zertifikate vertrauen einander nicht. Der TLS-Client vertraut stattdessen einigen Zertifizierungsstellen und leitet daraus sein Vertrauen in die Serverzertifikate ab.
  • Ein TLS-Client vertraut grundsätzlich jedem Zertifikat, das von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wurde, solange es den Erwartungen entspricht, z. B. nicht abgelaufen ist, zum Thema passt usw. Der TLS-Client muss in der Lage sein, die Vertrauenskette bis zur vertrauenswürdigen Zertifizierungsstelle aufzubauen. Daher muss der TLS-Client die relevanten Zwischenzertifikate kennen, die normalerweise im TLS-Handshake gesendet werden.

Wenn Sie also möchten, dass jeder Client allen Zertifikaten vertraut, unabhängig davon, welche Zwischenzertifizierungsstelle verwendet wurde, dann muss a) der Client der Stammzertifizierungsstelle vertrauen und b) die Server müssen während des TLS-Handshakes zusätzlich zum Serverzertifikat die Zwischenzertifizierungsstellen senden.

Siehe auchSSL-Zertifikat-Framework 101: Wie überprüft der Browser eigentlich die Gültigkeit eines bestimmten Serverzertifikats?.

verwandte Informationen