Frage

Ich habe ein bestimmtes Zertifikat auf meinem Server installiert. Das Zertifikat hat gültige Daten und scheint durchaus möglich, in der Windows-Zertifikate MMC-Snap-In.

Allerdings, wenn ich versuche, das Zertifikat zu lesen, um es in einem Httprequest zu verwenden, ich kann es nicht finden. Hier ist der Code verwendet:

    X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
    store.Open(OpenFlags.ReadOnly); X509Certificate2Collection col =
    store.Certificates.Find(X509FindType.FindBySerialNumber, "xxx", true);

xxx ist die Seriennummer; das Argument true bedeutet „nur gültige Zertifikate“. Die zurückgegebene Auflistung ist leer.

Das Merkwürdige ist, dass, wenn ich false passieren, was anzeigt, ungültige Zertifikate ist akzeptabel, die Sammlung enthält ein Element-Zertifikat mit dem angegebenen Seriennummer.

Fazit: Das Zertifikat wird gültig, aber die Find Methode behandelt sie als ungültig! Warum?

War es hilfreich?

Lösung

Versuchen Sie, die Zertifikatskette Überprüfung der X509Chain Klasse. Dies kann Ihnen genau sagen, warum das Zertifikat nicht gültig betrachtet.

Wie erickson vorgeschlagen, Ihre X509Store möglicherweise nicht über das vertrauenswürdige Zertifikat von der Zertifizierungsstelle in der Kette. Wenn Sie OpenSSL oder ein anderes Werkzeug verwendet, um Ihre eigene selbstsignierte CA zu generieren, müssen Sie das öffentliche Zertifikat für die CA an die X509Store hinzuzufügen.

Andere Tipps

Ist das Zertifikat vorhanden des Emittenten im X509Store? Ein Zertifikat ist nur gültig, wenn sie von jemandem unterschrieben ist, denen Sie vertrauen.

Ist das ein Zertifikat von einem echten CA, oder eine, die Sie sich selbst unterschrieben? Certificate Signing-Tools häufig von Entwicklern verwendet, wie OpenSSL, nicht einige wichtige Erweiterungen standardmäßig hinzu.

Ich glaube, x509 Zert an einen bestimmten Benutzer gebunden sind. Könnte es ungültig sein, weil in dem Code, den Sie es als ein anderer Benutzer als die zugreifen, für die sie geschaffen wurde?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top