代码之家  ›  专栏  ›  技术社区  ›  user1029651

CryptographicException“未加载签名密钥”

  •  1
  • user1029651  · 技术社区  · 7 年前

    我有一些代码试图使用 X509Certificate2

            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台不同的客户机器和我自己的机器上工作,但我们有一个客户出现错误:

    签名密钥未加载于

    有没有人更深入地了解为什么这会失败?证书和密码都正确,仅在客户服务器上出现故障。 .NET 4.5 .

    2 回复  |  直到 7 年前
        1
  •  0
  •   user1029651    7 年前

    这并不理想,因为代码的其余部分是在没有管理员权限的情况下运行的,但我还没有找到解决这个问题的任何其他解决方案。

        2
  •  0
  •   Sai Sherlekar    5 年前

    因此,请尝试使用您的证书而不是客户端证书