.net WCF-很可能证书。。。可能没有能够进行密钥交换的私钥
我试图在我的WCF服务中促进加密SOAP消息传递。为了做到这一点,我必须为生产安装和配置证书。当我使用现有的机器证书时,一切正常。但是我不想使用那个证书,所以我创建了一个新的证书,它是我使用“Web服务器”模板通过Active Directory证书服务获得的。当我在Web.config中实现此证书时,现在我在尝试查看WSDL时收到以下错误消息: 密钥集不存在。 证书“CN=myservice.mydomain.com,O=My Company,L=My City,S=My State”可能没有能够交换密钥的私钥,或者进程可能没有私钥的访问权限。有关详细信息,请参见内部异常 我已经看到很多关于这个问题的帮助响应,但大多数都只是假设我有权限问题,或者我的证书在错误的存储中,或者我的应用程序池在不同的帐户下运行 以下是我检查过的所有内容的摘要:.net WCF-很可能证书。。。可能没有能够进行密钥交换的私钥,.net,wcf,iis,certificate,x509certificate,.net,Wcf,Iis,Certificate,X509certificate,我试图在我的WCF服务中促进加密SOAP消息传递。为了做到这一点,我必须为生产安装和配置证书。当我使用现有的机器证书时,一切正常。但是我不想使用那个证书,所以我创建了一个新的证书,它是我使用“Web服务器”模板通过Active Directory证书服务获得的。当我在Web.config中实现此证书时,现在我在尝试查看WSDL时收到以下错误消息: 密钥集不存在。 证书“CN=myservice.mydomain.com,O=My Company,L=My City,S=My State”可能没有
还有什么我需要考虑的,以确保我的新证书能够进行密钥交换吗?在经历了许多混乱和紧张之后,我终于解决了我的问题,现在我将与您分享 首先,我认为网络上关于这个主题的很多建议已经过时了。至少在我的环境中(IIS 7和Windows 2008),不再需要web CA接口/certsrv,winhttpcertcfg也不再需要。两者都由MMC替代 最后,我要做的是:
- 复制现有的Web服务器模板
- 确保使用Windows Server 2003版本(因为2008会导致“指定的提供程序类型无效”错误)
- 将私钥标记为可导出(仍不完全确定为什么/是否有必要,但许多帖子建议这样做)
- 在“安全”选项卡下为“域计算机”和“已验证用户”授予“注册”权限
- 从Personal\Certificates文件夹中,右键单击,然后选择所有任务->请求新证书。这是/certsrv web CA接口的一个简单的替代方案
- 当提示输入其他信息时,请确保指定公共名称字段
我没有发现任何一篇文章或博客文章在一个地方提供了所有这些信息,我不得不从六到七个不同的推荐解决方案中拼凑出来。希望这能帮助其他人摆脱我所忍受的麻烦。当你打开证书时,它是否会说它实际上有私钥?是的,两个证书都有。两个私钥都不可导出,但都有。谢谢