X509Certificate Constructeur Exception

//cert is an EF Entity and 
//   cert.CertificatePKCS12 is a byte[] with the certificate.

var certificate = new X509Certificate(cert.CertificatePKCS12, "SomePassword");

Lors du chargement d'un certificat à partir de notre base de données sur notre serveur de test (Windows 2008 R2/IIS7.5) nous obtenons cette exception:

System.Security.Cryptography.CryptographicException: An internal error occurred.

   at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
   at System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromBlob(Byte[] rawData, IntPtr password, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle& pCertCtx)
   at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags)

REMARQUE: Ce problème ne se produit pas en local (Windows 7/Casini).

Tout insight est grandement apprécié.

  • Découvrez stackoverflow.com/questions/1345262/... et stackoverflow.com/questions/6097380/...
  • Je suppose que la source du problème est dans la byte[] données qui en cert.CertificatePKCS12. Sans avoir les données, on ne peut que deviner la raison de l'exception "Une erreur interne s'est produite". Donc, ma suggestion est que vous créez le certificat de test qui peut être utilisé dans votre environnement pour reproduire le problème, l'enregistrer dans le fichier et assurer le lien et le mot de passe (comme "SomePassword") pour le décodage du certificat. Après examen des données, on aura beaucoup plus de chances de trouver la reson et de proposer une solution de votre problème.
  • Merci pour la réponse @Oleg - si le tableau d'octets ont été mauvais, ne serait-il pas une erreur sur Win7 et Win2k8? Lorsque le tableau d'octets est écrit dans un fichier, il les importations correctement.
  • Je veux dire, pas une erreur, mais la combinaison de certaines propriétés du certificat, la clé et ainsi de suite. Donc, il faut analyser le problème. Pour être en mesure de reproduire les résultats ou de les analyser un besoin d'avoir le fichier PFX que vous utilisez comme le tableau d'octets cert.CertificatePKCS12.
  • quelles sont les propriétés serait la cause de la panne sur un OS et pas un autre? Pour des raisons évidentes de sécurité, nous ne pouvons pas divulguer les certificats eux-mêmes.
  • Pour comprendre ce que je veux dire que je peux le comparer à votre question avec le texte suivant: "Mon programme fonctionne sur mon ordinateur de développement, mais ne fonctionne pas sur mon serveur. Ce que la ligne de mon code ou de l'API que j'utilise pourrait être la raison?" Comme vous pouvez écrire beaucoup de programmes différents, on peut créer beaucoup de différents certificats et des clés. Sans avoir le code de votre programme (à partir de mon dernier exemple) ou sans avoir démo (non productif) certificat on peut seulement deviner, donc on ne peut pas résoudre votre problème. Essayez de créer démo certificat qui peut être utilisé pour reproduire le problème.
  • L'affichage d'un certificat sans la clé privée (comme l'exportation en .Fichier CER) est absolument sans danger. Vous pouvez donc poster vos productif certificat CER (pas comme PFX). L'information peut réduire un peu trop un problème commun qui vous décrire.

InformationsquelleAutor lukiffer | 2012-03-30