Ist es möglich, einem Zertifikat in Windows zu vertrauen, ohne seiner Stammzertifizierungsstelle zu vertrauen?

13

Ist es möglich, dass Windows einem Zertifikat vertraut, ohne dass es der Stammzertifizierungsstelle als vertrauenswürdige Stammzertifizierungsstelle vertraut?

Sagen wir, ich habe die folgende Zertifikatskette,

Dept-Root-CA
Dept-Intermediate-1
Server-Certificate

Ich möchte dem Server-Zertifikat vertrauen, aber ich möchte Dept-Root-CA nicht vertrauen, da es dann jedes Zertifikat signieren könnte und meine Server ihm vertrauen würden. Nur weil ich bereit bin, dem Zertifikat auf dem Server-Zertifikat für einen bestimmten Vorgang zu vertrauen, bedeutet dies nicht, dass ich bereit bin, darauf zu vertrauen, dass die Dept-Root-CA ordnungsgemäß gesichert wurde.

Vielen Dank

bkr
quelle
Wofür genau möchten Sie ihm vertrauen? HTTPS? Oder eine andere Sache? Es gibt verschiedene Möglichkeiten, anzugeben, dass Sie ein einzelnes Zertifikat akzeptieren möchten, ohne etwas anderes von der Stammzertifizierungsstelle zu akzeptieren. Dies hängt jedoch davon ab, was Sie tun. (Sie werden dennoch Fehler erhalten, wenn Sie versuchen, das Zertifikat zu validieren.)
Mark Henderson
Im Wesentlichen ja. Wenn es sich um benutzerdefinierten Code handeln würde, wäre dies kein Problem. Es wird jedoch ADFS 2 verwendet. Ich kann nur ändern, wie der Server diesem Zertifikat vertraut. Es gibt auch andere Fälle, aber dies ist nur das aktuelle Beispiel.
bkr

Antworten:

5

Nein. Solange auf dem Zertifikat "Issued by: xxx" steht, müssen Sie auch xxx bis zum Ende der Kette vertrauen. Wenn es sich um ein selbstsigniertes Zertifikat handelt, können Sie es im Speicher für vertrauenswürdige Stammzertifizierungsstellen ablegen. Da es für dieselbe Entität ausgestellt und von derselben ausgestellt wird, sollte es dann als vertrauenswürdig eingestuft werden.

Aber nein, es ist im Allgemeinen nicht möglich oder ratsam, den gesamten Zweck der zertifikatsbasierten Sicherheit vollständig zu umgehen.

Ryan Ries
quelle
5
Ich hatte Angst davor. Ich würde es jedoch nicht als Umgehung bezeichnen. Nur weil ich möchte, dass ein sicherer Kanal mit einer Maschine in einer anderen Organisationsgruppe kommuniziert, bedeutet dies nicht, dass ich ihrer Zertifizierungsstelle vertrauen möchte.
bkr
Richtig ... aber die Zertifizierungsstelle hat dieses Zertifikat signiert, und ohne dieses Zertifizierungsstellenzertifikat kann das andere Ende einfach das Zertifikat weiter ändern.
SpacemanSpiff
6
Ich bin mir nicht sicher, ob ich verstehe, was du sagst. Ich möchte ihrem Zertifikat ausdrücklich vertrauen. Wenn es geändert wurde, würde ich es wieder explizit vertrauen müssen. Grundsätzlich möchte ich das Vertrauensmodell für Zertifikate wie in Firefox. Wenn das Zertifikat in Firefox unter vorhandenen vertrauenswürdigen Zertifizierungsstellen nicht gültig ist, können Sie es trotzdem als vertrauenswürdig einstufen. Wenn es sich ändert, müssen Sie das neue Zertifikat als vertrauenswürdig einstufen, da es nicht ausdrücklich als vertrauenswürdig eingestuft wurde.
bkr
2
just keep changing their certificateWenn die Gegenstelle ihr Zertifikat geändert hat, stimmt es nicht mit dem von Ihnen gespeicherten überein. Wenn Sie das gesamte CA-Geschäft ignorieren, behandeln Sie es nicht einfach wie einen SSH-Hostschlüssel.
Zoredache
5
realistisch werden sie es nur einmal alle 2 Jahre ändern. Für das von mir verwendete MS-Produkt muss die Verbindung über https gesichert sein. deshalb muss man ihm vertrauen. da es mit ihrer Zertifizierungsstelle signiert ist, müsste ich ihrer Zertifizierungsstelle vertrauen - das möchte ich nicht tun, da sie dadurch Zertifikate auf meinen Server fälschen können, anstatt ihnen eine eingeschränkte Interaktion mit einem bestimmten Hostnamen zu erlauben.
bkr
5

Nun ... Sie könnten diese Vertrauensinformationen auf andere Weise erfassen.

Es ist leider etwas kompliziert.

Erstellen Sie Ihre eigene Zertifizierungsstelle, und erstellen Sie dann Ihren eigenen signierungsübergreifenden Aussteller für Dept-Intermediate-1 (oder Dept-Root-CA), indem Sie deren Zertifikat mit Ihrer Zertifizierungsstelle signieren und möglicherweise Domäneneinschränkungen hinzufügen. Wenn das "echte" Dep-Intermediate-1 deaktiviert (vorzugsweise) oder unbekannt ist, verwendet Windows stattdessen Ihre Vertrauenskette.

Sehen Sie meine andere Antwort hier: Schränken Sie ein Stammzertifikat auf eine Domäne ein

So sollen Zertifikate funktionieren, die mithilfe digitaler Signaturen eine Behauptung des Schlüsselbesitzes darstellen. Da Sie sicherstellen möchten, dass das Zertifikat und der Schlüssel zum Server gehören, signieren Sie es selbst unter Ihrer Autorität und weisen das System an, Ihnen zu vertrauen.

Ein Zertifikat ohne Zertifizierungsstellenhierarchie bietet immer noch viele Vorteile, über das hinaus, was SSH-Schlüssel bieten. Ein Teil davon sind die Einschränkungen für sie. Schlüsselverwendung, Gültigkeitsdatum, Widerrufsinformationen, Domainbeschränkungen usw. Der andere Teil sind die identifizierenden Informationen. Server, dem der Schlüssel, die Identität des Ausstellers, die erzwungenen CA-Richtlinien, die Schlüsselspeicherinformationen usw. gehören.

davenpcj
quelle
Das ist interessant. Ich muss etwas Zeit finden, um diesen Prozess durchzuarbeiten und zu sehen, ob ich ihn zum Laufen bringen kann.
bkr