2017-08-07 16 views
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を使用しています。

+0

環境に問題があります。私は再現できないのでデバッグするのは面倒です。違いを探してください。 Windows版/アクセス許可/ルート証明書/ etc。 –

答えて

0

「解決策」は、支払アドオンをマシンの管理者として実行することでした。 残りのコードは管理者権限なしで実行できるようにビルドされていますが、この問題に対するその他の解決策は見つかりませんでした。

関連する問題