j'ai un code qui tente de signer un document XML à l'aide d'un X509Certificate2
cert:CryptographicException « clé de signature est pas chargé »
byte[] bytes = Convert.FromBase64String(_loginDetails.CertificateAsString);
X509Certificate2 cert = new X509Certificate2(bytes, _loginDetails.CertKey, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
Reference reference = new Reference("#MsgBody");
XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
reference.AddTransform(env);
SignedXml signedXml = new SignedXml(doc);
signedXml.AddReference(reference);
RSACryptoServiceProvider rsaKey = (RSACryptoServiceProvider)cert.PrivateKey;
signedXml.SigningKey = rsaKey;
signedXml.ComputeSignature();
// Get the XML representation of the signature and add to the SOAP Header
XmlElement xmlDigitalSignature = signedXml.GetXml();
...
Ce travail de code sur 8 machines des clients différents et sur ma propre machine, mais nous ont 1 client qui se l'erreur:
Signing key is not loaded at System.Security.Cryptography.Xml.SignedXml.ComputeSignature
J'ai obtenu une copie du certificat et mot de passe du client et il signe correctement sur ma machine de développeur sans aucune erreur.
Quelqu'un a-t-il plus d'informations sur les raisons pour lesquelles cela peut échouer? Le certificat et le mot de passe sont corrects et échouent uniquement sur le serveur du client. Nous utilisons .NET 4.5
.
Problème d'environnement. Tricky à déboguer comme je ne peux pas reproduire. Cherchez des différences. Version Windows/permissions/certificats racine/etc. –