Frage Vertrauen in eine nicht vertrauenswürdige CA - Kann ich einschränken, wie das System darauf vertraut?


(Posted zu ServerFault statt StackOverflow, weil ich denke, dass es die Betriebssystemkonfiguration mehr betrifft als Programmiercode).

Derzeit bin ich für die Pflege eines Systems verantwortlich, das mit einem Webservice eines Drittanbieters verbunden ist. Dieser Webservice erfordert Client-Authentifizierungszertifikate, was zwar fair ist, aber der Webservice selbst ist mit einem selbstsignierten Zertifikat gesichert, das durch ein selbst erstelltes Zertifikat der Stammzertifizierungsstelle erstellt wurde - derselbe Stamm, der die Clientauthentifizierungszertifikate erstellt.

Es würde ausreichen, nur das aktuelle Dienstzertifikat der Liste bekannter vertrauenswürdiger Quellen hinzuzufügen und das selbst erstellte Berechtigungszertifikat zu ignorieren. Leider ändert sich das Dienstzertifikat regelmäßig, sodass das Berechtigungszertifikat vertrauenswürdig ist, um sicherzustellen, dass die Anwendung nicht bricht Service-Zertifikat wird erneuert.

Allerdings vertraue ich (persönlich) nicht dem CA-Zertifikat, basierend auf meiner Erfahrung mit dem Unternehmen, das den Webservice betreibt - es würde mich nicht überraschen, wenn es ins Internet gelangt - und besorgniserregend ist, dass das CA-Cert keine Schlüsselbenutzungsbeschränkungen hat es (während externe MITM-Angriffe eine Möglichkeit sind, obwohl Remote, ich bin mehr besorgt über ein durchgesickertes Zertifikat zum Beispiel zum Signieren von Code).

Ist es möglich, dass ich meinem Computer (derzeit eine Server-Box, aber in zukünftigen normalen Desktop-Client-Boxen) eine CA anvertrauen kann, aber nur für eine bestimmte Menge von Schlüsselverwendungen und eine kleine Menge möglicher Subjektnamen (Domain-Namen) )

Der Server ist derzeit Windows Server 2012 R2, aber er könnte auf einer Linux-Box laufen - obwohl die Desktop-Maschinen alle Windows-Boxen sind.


31
2018-05-05 03:10


Ursprung


Zumindest unter Linux haben viele Anwendungen die Möglichkeit, den Speicherort von Peer-CA-Zertifikaten anzugeben, sodass Sie den Geltungsbereich dieser Zertifizierungsstelle auf nur die Anwendung beschränken können, die sie verwendet. @ CryptoGuy 's Antwort würde auch unter Linux funktionieren, da ist nichts Windows-spezifisches drin. - Edheldil
@Edheldil: Es ist jedoch implementierungsspezifisch - z.B. Windows hat Namensbeschränkungen für X.509 viel länger unterstützt als z. NSS oder GnuTLS. - grawity
Ihr System verbindet sich mit diesem Drittanbieter-Dienst. kann das Client-Code auf Ihrem System so konfiguriert werden, dass Sie der CA dieses Dienstes so vertrauen, dass sie ausgeführt wird nur für diesen Client-Codenicht für dein gesamtes System? - Castaglia
@Castaglia Ich kann meinen eigenen Zertifikatsverifizierungscode schreiben, der unabhängig vom Hostsystem funktioniert, aber es gibt andere Teile von Clientsoftware, die ich nicht kontrollieren kann und die systemweite Zertifikatsdienste verwenden. - Dai


Antworten:


Ja, es ist möglich. Im Fall von Windows gibt es eine Funktion namens Cross-Zertifizierung oder qualifizierte Unterordnung.

Die Idee besteht darin, dass Sie das Zertifikat einer ausstellenden Zertifizierungsstelle eines Drittanbieters in Ihrer Umgebung signieren. Als Ergebnis wird das Remote-SSL-Zertifikat an Ihr eigenes Root-CA-Zertifikat angekettet. Um sich vor möglichen Rogue-Zertifikaten zu schützen, implementieren Sie ein Name Constraints Zertifikatserweiterung, in der Sie eine Liste mit zulässigen Namen angeben. Wenn eine Zertifizierungsstelle eines Drittanbieters ein Zertifikat für einen anderen Namen ausstellt (nicht explizit in der Erweiterung für Namenseinschränkungen angegeben), wird sie automatisch von Ihrem CryptoAPI-Anbieter abgelehnt.

Zusätzlich zu den Namenseinschränkungen können Sie die Einschränkung für erweiterte Schlüsselnutzungen beschreiben, indem Sie die Option definieren Application Policies Zertifikatserweiterung im Gegenzertifikat. Ihr Vertrauensanbieter validiert daher nur die im Application Policies Erweiterung.

Mehr Informationen: Planen und Implementieren von Kreuzzertifizierung und qualifizierter Unterordnung mit Windows Server 2003

p.s. Obwohl der Artikel gegen Windows Server 2003 geschrieben wurde, gilt dieser Artikel immer noch für die neueste Windows Server-Version.


39
2018-05-05 05:28