m_safeCertContext est un handle non valide
J'ai été confrontées à un problème, peut-être les gars, vous pouvez me pointer dans la bonne direction.
Je suis en train de signer numériquement un document pdf, sur le serveur, via une connexion https.
Au chargement de la page je fais comme ça:
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())};
J'obtiens le message d'erreur "m_safeCertContext est un handle non valide" sur la dernière ligne de code.
Veuillez noter que:
- J'obtiens le même message d'erreur à l'aide de 2 complètement différents certificats.
- Le certificat est extrait de la "carte" de la variable ok.
- J'ai utilisé pour obtenir la carte de X509Certificate2 mais je l'ai lu hier, quelque part je suis de ne pas être en mesure de trouver l'erreur pourrait être résolu par moulage comme un X509Certificate et puis de passer à X509Certificate2. C'était une de ces "eh bien... cela ne fait aucun sens, mais je n'ai pas encore essayé de" moments.
- J'ai essayé d'ajouter
[System.Security.SecurityCritical, System.Security.SecurityTreatAsSafe]
propriété à toutes les méthodes et même de la classe pour voir si cela fonctionnerait... pas de chance.
Quelqu'un me donner un indice?
OriginalL'auteur Sergio | 2009-01-14
Vous devez vous connecter pour publier un commentaire.
Cela peut arriver à tout moment vous avez accès non initialisée champs dans la cryptographie.
Dans votre code, si
Request.ClientCertificate
retourne un objet avec pas de matières certificat de données, alors vous verrez le message d'erreur lorsque vous appelezcard.GetRawCertData()
sur votre quatrième ligne.Comme un simple test, essayez les solutions suivantes:
Ceci lancera l'exception suivante, car il n'y a aucune empreinte disponibles:
avec la trace de la pile:
.HasPrivateKey
et obtenir la même erreur. Donc, il n'est pas initialisé. alors comment vérifier si il a une clé privée?Je ne suis pas sûr @AaA . Je vais essayer de demander que comme une nouvelle question ici.
OriginalL'auteur DanM7
Tout d'abord, avez-vous une pile?
Deuxième, ici il y a un post que je voudrais lui donner un essai. Les problèmes mentionnés dans le post sont généralement la cause de certs-troubles connexes.
OriginalL'auteur Ariel
Ressemble ce n'est pas votre problème, mais pour les autres: assurez-vous que vous ne faites pas appel X509Certificate2.Reset() avant d'essayer d'accéder à un certificat liées à des propriétés ou des méthodes.
OriginalL'auteur micahhoover
l'appel de méthode à partir d'un autre code comme ceci
Est égal à - appel d'erreur "m_safeCertContext est un handle non valide." parce que X509Certificate existe pas
décision
ce code fonctionne!
OriginalL'auteur Николай