Vertrauen in eine nicht vertrauenswürdige Zertifizierungsstelle - Kann ich die Vertrauenswürdigkeit des Systems einschränken?


32

(Gepostet in ServerFault anstelle von StackOverflow, da es meines Erachtens mehr um die Betriebssystemkonfiguration als um Programmcode geht).

Ich bin derzeit für die Wartung eines Systems verantwortlich, das eine Verbindung zu einem Webservice eines Drittanbieters herstellt. Dieser Webservice erfordert Clientauthentifizierungszertifikate, was fair genug ist. Der Webservice selbst ist jedoch durch ein selbstsigniertes Zertifikat geschützt, das von einem selbst erstellten Stammzertifizierungsstellenzertifikat erstellt wird - dem Stamm, der die Clientauthentifizierungszertifikate erstellt.

Es würde ausreichen, nur das aktuelle Dienstzertifikat zur Liste der vertrauenswürdigen Adressen hinzuzufügen und das selbst erstellte Autorisierungszertifikat zu ignorieren. Leider ändert sich das Dienstzertifikat regelmäßig, sodass das Autorisierungszertifikat vertrauenswürdig sein muss, um sicherzustellen, dass die Anwendung nicht beschädigt wird, wenn die Service-Zertifikat wird erneuert.

Aufgrund meiner Erfahrung mit dem Unternehmen, das den Webservice betreibt, vertraue ich dem CA-Zertifikat jedoch nicht (persönlich). Es würde mich nicht überraschen, wenn es ins Internet gelangen würde. Bedenklicherweise unterliegt das CA-Zertifikat keinen Einschränkungen hinsichtlich der Schlüsselverwendung es (während externe MITM-Angriffe eine Möglichkeit sind, obwohl remote, mache ich mir mehr Sorgen über ein durchgesickertes Zertifikat, das zum Beispiel für die Codesignatur verwendet wird).

Kann ich meinem Computer (derzeit eine Server-Box, in Zukunft jedoch normale Desktop-Client-Boxen) mitteilen, einer Zertifizierungsstelle zu vertrauen, jedoch nur für eine bestimmte Anzahl von Schlüsselnutzungen und eine kleine Anzahl möglicher Subjektnamen (Domain-Namen)? )?

Der Server ist derzeit Windows Server 2012 R2, kann jedoch auf einer Linux-Box ausgeführt werden - obwohl es sich bei den Desktop-Computern ausschließlich um Windows-Boxen handelt.


3
Zumindest unter Linux haben viele Anwendungen die Option, den Speicherort von Peer-CA-Zertifikaten anzugeben, sodass Sie den Bereich dieser CA auf die Anwendung beschränken können, die sie verwendet. Die Antwort von @CryptoGuy würde auch unter Linux funktionieren, es gibt nichts Windows-spezifisches.
Edheldil

1
@Edheldil: Es ist jedoch implementierungsspezifisch - z. B. unterstützt Windows X.509-Namenseinschränkungen wesentlich länger als z. B. NSS oder GnuTLS.
Grawity

Ihr System stellt eine Verbindung zu diesem Drittanbieter-Service her. Kann der Clientcode auf Ihrem System so konfiguriert werden, dass er der Zertifizierungsstelle dieses Dienstes vertraut, sodass er nur für diesen Clientcode und nicht für Ihr gesamtes System ausgeführt wird?
Castaglia

@Castaglia Ich kann meinen eigenen Zertifikatsüberprüfungscode schreiben, der unabhängig vom Hostsystem funktioniert. Es gibt jedoch auch andere Client-Software, über die ich keine Kontrolle habe und die systemweite Zertifikatsdienste verwenden.
Dai

Antworten:


40

Ja, es ist möglich. Bei Windows gibt es eine Funktion mit der Bezeichnung "Gegenzertifizierung" oder "Qualifizierte Unterordnung".

Die Idee ist, dass Sie das ausstellende CA-Zertifikat eines Drittanbieters in Ihrer Umgebung signieren. Als Ergebnis wird das Remote-SSL-Zertifikat an Ihr eigenes Stammzertifizierungsstellenzertifikat gekettet. Um sich vor möglichen falschen Zertifikaten zu schützen, implementieren Sie eine Name ConstraintsZertifikatserweiterung, in der Sie eine Liste zulässiger Namen angeben. Wenn eine Drittanbieter-Zertifizierungsstelle ein Zertifikat für einen anderen Namen ausstellt (der nicht ausdrücklich in der Namensbeschränkungserweiterung angegeben ist), wird dies von Ihrem CryptoAPI-Anbieter automatisch abgelehnt.

Zusätzlich zu den Namensbeschränkungen können Sie die Einschränkung der erweiterten Schlüsselverwendung beschreiben, indem Sie die Application PoliciesZertifikatserweiterung im Gegenzertifikat definieren . Daher überprüft Ihr Vertrauensanbieter erfolgreich nur die in der Application PoliciesErweiterung angegebenen Verwendungen .

Weitere Informationen: Planen und Implementieren von Gegenzertifizierung und qualifizierter Unterordnung unter Windows Server 2003

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

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.