0
我有嘗試使用X509Certificate2
證書籤署XML文檔的一些代碼:CryptographicException「簽名密鑰未加載」
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();
...
這在8個不同的客戶機和我自己的機器上的代碼的工作,但我們有1個客戶是得到錯誤:
3210我已經得到了從客戶證書和密碼的副本,它在我的開發機器上正確簽署沒有任何錯誤。
有沒有人有更深入的瞭解,爲什麼這可能會失敗?證書和密碼都是正確的,並且僅在客戶服務器上失敗。 我們使用.NET 4.5
。
環境問題。棘手的調試,因爲我不能重現。尋找差異。 Windows版本/權限/根證書/等。 –