m_safeCertContext ist ein ungültiges handle
Ich habe das Ringen mit einem problem, vielleicht könnt Ihr mich in die richtige Richtung.
Ich versuche Digital zu signieren einer pdf-Datei auf dem webserver, die über eine https-Verbindung.
Beim laden der Seite mache ich so:
HttpClientCertificate cs = Request.ClientCertificate;
X509Certificate card = new X509Certificate(cs.Certificate);
Org.BouncyCastle.X509.X509CertificateParser cp = new Org.BouncyCastle.X509.X509CertificateParser();
Org.BouncyCastle.X509.X509Certificate[] chain = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(card.GetRawCertData())};
Ich bin immer der Fehler "m_safeCertContext ist ein ungültiges handle" an, die Letzte Zeile des Codes.
Bitte beachten Sie, dass:
- Ich bin immer der gleiche Fehler mit 2 völlig verschiedene Zertifikate.
- Das Zertifikat wird abgerufen, um die "Karte" variable "ok".
- Ich verwendet, um die Karte zu X509Certificate2-aber ich Las gestern irgendwo, ich bin nicht in der Lage zu finden, dass der Fehler konnte gelöst werden, indem man als X509Certificate und dann downcasting zu X509Certificate2. Es war einer dieser "tja... dies nicht sinnvoll ist, aber ich habe nicht versucht es noch" - Momente.
- Ich habe versucht, hinzufügen
[System.Security.SecurityCritical, System.Security.SecurityTreatAsSafe]
Eigenschaft auf alle Methoden und auch die Klasse, um zu sehen, ob es funktionieren würde... kein solches Glück.
Jemand kann man mir einen Tip geben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies kann passieren, jedes mal, wenn Sie Zugriff auf nicht initialisierte Felder, die in der Kryptographie.
In Ihrem code, wenn
Request.ClientCertificate
gibt ein Objekt zurück, mit keine raw-Zertifikat Daten, dann wird die Fehlermeldung angezeigt, wenn Sie anrufencard.GetRawCertData()
auf Ihrem vierten Zeile.Als ein einfacher test, versuchen Sie Folgendes:
Dies wirft die folgende Ausnahme, weil es keinen Fingerabdruck zur Verfügung:
mit den angegebenen stack trace:
.HasPrivateKey
und immer die gleichen Fehler. So ist es nicht initialisiert. so, wie zu überprüfen, ob es einen private key?Erste, Sie haben einen Stapel?
Zweite, hier es ist ein post, ich würde einen Versuch geben. Die genannten Fragen in der post sind in der Regel die Ursache des certs-bezogene Probleme.
Sieht aus wie das ist nicht dein problem, aber für die anderen: stellen Sie sicher, dass Sie nicht nennen, X509Certificate2.Reset (), bevor Sie versuchen, Zugriff auf Zertifikat-bezogene Eigenschaften oder Methoden.
Methode aufrufen aus einem anderen code wie folgt
Equals - Aufruf Fehler "m_safeCertContext ist ein ungültiges handle". da X509Certificate nicht vorhanden
Entscheidung
dieser code funktioniert!