Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF错误:';证书';我的证书';可能没有能够进行密钥交换的私钥_C#_Wcf_Iis_Wcf Binding_Wcf Security - Fatal编程技术网

C# WCF错误:';证书';我的证书';可能没有能够进行密钥交换的私钥

C# WCF错误:';证书';我的证书';可能没有能够进行密钥交换的私钥,c#,wcf,iis,wcf-binding,wcf-security,C#,Wcf,Iis,Wcf Binding,Wcf Security,我有一个WCF服务,我正试图在我们的生产web服务器(IIS6)上托管。我已经建立了网络,并将我们的证书绑定到网络上。当我尝试浏览到服务url时,我在事件日志中收到以下错误: 异常消息是:很可能是该证书 'CN=.mydomain,OU=安全链接SSL通配符,OU=I.T.,C=US'可能不是 拥有能够进行密钥交换的私钥,否则进程可能会 没有私钥的访问权限。请参阅内部异常 有关详细信息…->System.ArgumentException:很可能 证书'CN=.mydomain.com,OU=安

我有一个WCF服务,我正试图在我们的生产web服务器(IIS6)上托管。我已经建立了网络,并将我们的证书绑定到网络上。当我尝试浏览到服务url时,我在事件日志中收到以下错误:

异常消息是:很可能是该证书 'CN=.mydomain,OU=安全链接SSL通配符,OU=I.T.,C=US'可能不是 拥有能够进行密钥交换的私钥,否则进程可能会 没有私钥的访问权限。请参阅内部异常 有关详细信息…->System.ArgumentException:很可能 证书'CN=.mydomain.com,OU=安全链接SSL通配符, OU=I.T.,O=mydomain,C=US'可能没有能够 密钥交换或进程可能没有对的访问权限 私钥。有关详细信息,请参见内部异常。--> System.Security.Cryptography.CryptographyException:句柄为 无效


我已经确认ASP.NET1.1、2和4在“Web服务扩展”中都设置为“允许”。我还确认证书是在iis中设置的,它显示“您有一个与此证书对应的私钥”。此外,执行权限设置为“脚本和可执行文件”。

似乎您的证书是为签名而不是密钥交换创建的,我认为这对于SSL证书是正常的


如果查看,可以看到-sky开关允许您指定证书是用于签名还是用于密钥交换。您可以尝试使用exchange类型创建自签名证书,并测试异常是否仍然发生。不要忘记将自签名证书放入计算机的受信任根证书颁发机构文件夹中,以避免证书无效的例外情况。

我遇到了这个问题,结果证明运行服务的帐户没有访问证书私钥的权限

以下是我用来解决这个问题的步骤:

  • 启动Cetificate管理器。通过运行MMC,激活[File]-[Add/Remove Snap-in…],然后添加“证书”,在随后的向导对话框中选择“计算机帐户”和“本地计算机”
  • 在证书管理器中,右键单击相关证书并激活[所有任务]-[管理私钥]
  • 这将为您提供一个权限窗口。单击添加
  • 添加运行此服务的帐户名或组

还要确保需要访问证书的帐户名或组也可以访问证书所在的文件夹层次结构。如果您的证书隐藏在例如“C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys”中,并且需要访问它的帐户是“网络服务”,则“网络服务”需要访问该完整路径。仅仅为文件分配权限是不够的。

这里也有同样的问题。为了解决这个问题,我在web.config的
节点中添加了以下行


使用makecert,使用exchange参数创建证书并导入。更新了web.config以指向新证书并获得相同的错误。还有什么我可以尝试的吗?当我选中“管理私钥”时,我看到我的用户有权限,但我仍然收到此错误?右键单击证书时,我在MMC中的任何位置都看不到“管理私钥”。这使我今天早上得以保存。谢谢在使用新证书的产品推出过程中出现了该问题。真的帮我摆脱了困境。伙计@啊。请确保以管理员身份运行MMC。尝试右键单击personal store中的一个键,然后查看该选项是否显示在那里。还要确保您使用的是.pfx证书,而不是.cer证书。