Ich habe ein bestimmtes Zertifikat auf meinem Server installiert. Dieses Zertifikat hat gültige Daten und scheint im MMC-Snap-In für Windows-Zertifikate einwandfrei zu sein.
Wenn ich jedoch versuche, das Zertifikat zu lesen, um es in einem HttpRequest zu verwenden, kann ich es nicht finden. Hier ist der verwendete Code:
%Vor% xxx
ist die Seriennummer; Das Argument true
bedeutet "nur gültige Zertifikate". Die zurückgegebene Sammlung ist leer.
Das Seltsame ist, dass, wenn ich false
übergebe, das angibt, dass ungültige Zertifikate akzeptabel sind, die Sammlung ein Element enthält - das Zertifikat mit der angegebenen Seriennummer.
Fazit: Das Zertifikat erscheint als gültig, aber die Methode Find
behandelt es als ungültig! Warum?
Versuchen Sie, die Zertifikatskette mithilfe der Klasse X509Chain zu überprüfen . Dies kann Ihnen genau sagen, warum das Zertifikat nicht als gültig angesehen wird.
Wie von Erickson vorgeschlagen, verfügt Ihr X509Store möglicherweise nicht über das vertrauenswürdige Zertifikat der Zertifizierungsstelle in der Kette. Wenn Sie OpenSSL oder ein anderes Tool zum Generieren Ihrer eigenen selbstsignierten Zertifizierungsstelle verwendet haben, müssen Sie das öffentliche Zertifikat für diese Zertifizierungsstelle dem X509Store hinzufügen.
Ist das Zertifikat des Ausstellers im X509Store vorhanden? Ein Zertifikat ist nur gültig, wenn es von einer Person unterschrieben wurde, der Sie vertrauen.
Ist dies ein Zertifikat einer echten Zertifizierungsstelle oder eines, das Sie selbst unterschrieben haben? Tools zur Zertifikatsignierung, die häufig von Entwicklern wie OpenSSL verwendet werden, fügen standardmäßig keine wichtigen Erweiterungen hinzu.
Ich glaube, dass x509-Zertifikate an einen bestimmten Benutzer gebunden sind. Könnte es ungültig sein, weil Sie im Code auf einen anderen Benutzer zugreifen als den, für den er erstellt wurde?
Tags und Links c# ssl certificate x509