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版/アクセス許可/ルート証明書/ etc。 –