使用证书致电服务:错误-“密钥集不存在” - c#

我目前正在尝试访问第三方提供的服务。他们已向我们颁发了PKCS格式的证书。证书安装在“本地计算机-受信任的根目录”中。

我们的应用程序在运行时会找到此证书,并将其发送到由第三方托管的身份验证URL,在此进行身份验证并颁发SAML令牌。然后将其用于调用实现我们所需功能的实际服务。

当我通过开发机[Windows 7]中的服务引用运行使用该服务的应用程序时,一切运行正常。

现在的痛点是,因为我们在将要进行测试的Citrix环境中,出现了以下错误:

METHOD的例外:针对“服务URL”的SOAP安全协商
目标失败。内部异常:
System.Security.Cryptography.CryptographicException:密钥集不
存在。

任何人都可以帮助我解决此问题,因为无法在本地复制它,并且仅在服务器操作系统中发生,不确定是否是特权问题或某些代码问题。

参考方案

此问题可能有两个原因:

证书没有私钥。
您的进程所运行的用户没有读取私钥的权限。

由于您已经在开发环境中启动并运行了此程序,因此请假设原因是2。

如果您尚不知道,则需要确定您的进程在测试服务器上运行的用户帐户。然后在测试服务器和add the Certificates snap-in上打开MMC。找到证书,右键单击并选择All Tasks |。 Manage Private Keys...并向用户授予读取权限。

有关更多信息,请访问:

X509Certificate - Keyset does not exist

CryptographicException 'Keyset does not exist', but only through WCF

Service failure with CryptographicException – Keyset does not exist

Wcf: Keyset does not exist

错误:操作符类型冲突:nvarchar与图片不兼容 - c#

我在tblEmployee中有图像字段用于员工的图片。当我尝试在上传器中保存没有图像文件的员工详细信息时,它会抛出错误 “操作数类型冲突:nvarchar与图像不兼容”而当我从对话框中选择任何图片时,它工作正常。我正在使用C#Windows应用程序。我的代码如下所示:byte[] bimage=null; if(txtPic.Text!="…

错误:无法将类型为“ System.Int32”的对象转换为类型为“ System.String”的对象 - c#

我已经完成了完美的编码注册页面,登录代码,现在UpdateCustomer页面有错误-背景信息:我正在使用Microsoft Access作为数据源 LabelState.Text = (string)Session["sState"]; LabelPostalCode.Text = (string)Session["sPost…

错误:无法访问过滤器 - java

这是我的spring-security-loginform-annotation项目的错误我从mkyong网站上提到link[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on proje…

WCF-来自另一个程序集的服务合同 - c#

自上周以来,我一直尝试使用Google搜索来寻找答案,但没有发现任何问题。也许我只是在搜索不正确的关键字...基本上,我们有一个正在运行的WCF服务,然后有一个单独的dll,其中包含另一个ServiceContract。我们想知道是否有可能在当前正在运行的服务中公开单独的dll,如果可以,如何?我们仍然是WCF的新手,所以如果这是一个愚蠢的问题,请原谅。 :…

由于System.Security.SecurityException,Winform应用程序无法启动 - c#

由于System.Security.SecurityException,我的Windows窗体应用程序未启动。这是Program.cs上的代码 [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDef…