Java-Zugriff auf Zwischenzertifizierungsstellen von Windows-Keystores?

8

Ich muss eine Zertifikatskette unter Windows erstellen, von einem X.509-Smartcard-Zertifikat über eine oder mehrere Zwischenzertifizierungsstellen bis hin zu einer Stammzertifizierungsstelle. Das ist einfach, wenn sich die CA-Zertifikate in einem JKS-Schlüsselspeicher befinden, aber ich muss auch die Windows-Schlüsselspeicher verwenden.

Ich kann das Root-CA-Zertifikat von "Windows-ROOT" abrufen, aber ich kann nicht zum Keystore "Intermediate Certification Authorities" gelangen.

Hat jemand das getan?

Danke!

    
Mermeister 29.03.2011, 18:10
quelle

2 Antworten

8

Der SunMSCAPI Cryptographic Provider unterstützt nur zwei Keystores: Windows-MY (persönlicher Zertifikatsspeicher) und Windows-ROOT (vertrauenswürdiger Autoritätszertifikatspeicher), daher glaube ich nicht, dass es möglich ist, direkt auf andere Windows-Zertifikatsspeicher zuzugreifen. Es ist jedoch möglicherweise nicht erforderlich, da der Windows-MY keystore in der Lage ist, Zertifikatketten mit den Zertifikaten anderer Speicher zu erstellen.

Hier ist ein Code-Snippet, mit dem ich es teste:

%Vor%

Wenn ich ein einzelnes Zertifikat mit privatem Schlüssel im persönlichen Zertifikatsspeicher hinzufüge, ist die Kettenlänge 1. Nach dem Hinzufügen der CA in den Zwischenzertifizierungsstellen-Zertifikatsspeicher starte ich das Programm ein zweites Mal und die Kettenlänge ist jetzt 2.

UPDATE (2. April) Es ist möglich, Zertifikate im Keystore Windows-MY und Windows-ROOT mit einigen Einschränkungen programmgesteuert hinzuzufügen:

  • Beim Hinzufügen eines Zertifikats in Windows-ROOT wird der Benutzer zur Bestätigung aufgefordert
  • Das gesamte im Windows-MY Keystore hinzugefügte Zertifikat ist ein TrustedCertificateEntry (aus Sicht des Keystores und nicht aus Sicht von Windows). Der Keystore scheint die längste Kette mit allen verfügbaren Zertifikaten aufzubauen.
  • Die Zertifikate ohne zugehörigen privaten Schlüssel sind im Windows-Zertifikatspeicher-Browser nicht sichtbar, können aber programmgesteuert gelöscht werden.

Das Hinzufügen eines Zertifikats in einem Keystore ist einfach:

%Vor%     
Jcs 01.04.2011 07:55
quelle
1

Jcs hatte die Antwort, aber ich möchte einen Pseudocode zeigen:

%Vor%

Windows-Cert-Ketten werden nicht validiert, da sie erstellt wurden, aber jetzt können Sie CertPath und PKIXParameters erstellen und diese zur Überprüfung der Kette verwenden.

%Vor%     
Mermeister 07.04.2011 20:08
quelle

Tags und Links