我有一些代码调用使用X.509认证保护的第三方Web服务.
如果我直接调用代码(使用单元测试),它可以正常工作.
部署后,将通过WCF服务调用此代码.我添加了第二个调用WCF服务的单元测试,但是当我在第三方Web服务上调用方法时,这个CryptographicException消息失败了"Keyset does not exist".
我认为这是因为我的WCF服务将尝试使用不同的用户自己调用第三方Web服务.
任何人都可以解决这个问题吗?
我目前正在尝试访问第三方提供的服务。他们已向我们颁发了PKCS格式的证书。证书安装在“本地计算机-受信任的根目录”中。
我们的应用程序在运行时会找到该证书,并将其发送到由第三方托管的身份验证URL,在此进行身份验证并颁发SAML令牌。然后将其用于调用实现我们所需功能的实际服务。
当我通过开发机器[Windows 7]中的服务引用运行使用该服务的应用程序时,一切运行正常。
现在的痛点是,因为我们在将要进行测试的Citrix环境中,由于
方法中的异常:与目标的“服务URL”进行SOAP安全协商失败。内部异常:System.Security.Cryptography.CryptographicException:密钥集不存在。
任何人都可以帮助我解决此问题,因为无法在本地重现此问题,并且仅在服务器操作系统中发生,不确定是否是特权问题或某些代码问题。
运行以下代码时的问题:
X509Certificate2 cert = new X509Certificate2(@"C:\file.p12", "password", X509KeyStorageFlags.Exportable);
RSACryptoServiceProvider crypt = (RSACryptoServiceProvider)cert.PrivateKey;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:Keyset does not exist.
我没有将证书添加到商店,这是否需要能够访问私钥?