客户端上不信任WCF自签名证书

客户端上不信任WCF自签名证书,wcf,ssl,iis-7,ssl-certificate,self-signed,Wcf,Ssl,Iis 7,Ssl Certificate,Self Signed,我有一个WCF服务,它只在两台服务器机器之间使用。它永远不会被公开使用 我希望可以使用SSL和自签名证书来实现安全性 我使用IIS7创建了一个证书,并使用IE和MMC(个人、受信任的root、第三方和受信任的人)将其安装在客户端计算机上 我仍然无法通过代码或IE8访问该服务,除非它质疑证书 从IE我得到了通常的“这个网站的安全证书有问题。” 从代码中我得到错误:“无法为具有权限的SSL/TLS安全通道建立信任关系” 为什么不起作用?它不起作用的原因是IE检测到证书不是从有效的CA(证书颁发机构)

我有一个WCF服务,它只在两台服务器机器之间使用。它永远不会被公开使用

我希望可以使用SSL和自签名证书来实现安全性

我使用IIS7创建了一个证书,并使用IE和MMC(个人、受信任的root、第三方和受信任的人)将其安装在客户端计算机上

我仍然无法通过代码或IE8访问该服务,除非它质疑证书

从IE我得到了通常的“这个网站的安全证书有问题。”

从代码中我得到错误:“无法为具有权限的SSL/TLS安全通道建立信任关系”


为什么不起作用?

它不起作用的原因是IE检测到证书不是从有效的CA(证书颁发机构)创建的。自签名证书更适合于测试。如果没有警告,SSL就没有多大意义。

您确定您的自签名证书位于将访问您的WCF服务的客户端计算机上的受信任的根证书颁发机构的证书存储中吗?请参阅下面的自签名证书屏幕截图,该证书受我的一台Windows Vista计算机信任

您还确定您的证书是自签名证书吗。请参阅我的一个自签名证书末尾的屏幕截图

更新信息:

有关如何使用名为SelfSSL7的实用程序创建包含多个主机名的自签名证书的信息,请查看帖子


下面是另一个关于SelfSSL7.exe的好信息和下载信息。

我今天有这个,但是有IIS7。如果使用IIS生成证书(inetmgr->选择主节点,然后选择服务器证书,使用右菜单选项创建自认证证书。“颁发给”属性是使用计算机的FQDN设置的,例如“mymachine.myintranet.copp.net”或其他

只要您从诸如“mymachine.myintranet.copp.net/myservice/service.svc”之类的服务获取要连接的url的FQDN,那么错误就会发生


如果您使用的是另一个URL,如IP地址或本地主机,则会发生错误。因此,上面的机器在其网络中显然被称为johnma,然后它就会工作。

I虽然在客户端机器上安装证书可以解决此问题,但否?@erix信任证书会使警告消失。对我来说,安装根目录中的证书同时满足IE和Chrome,但WCF仍然不喜欢“CN”中包含的主机名证书的名称是否与您的https://URL上使用的主机名相匹配?您可以转储或列出您创建的证书吗?除去私钥,我们不需要看到。除了@HeatfanJohn的注释,证书中的主机名必须与您在客户端的服务端点中输入的内容完全匹配,也就是说,它必须是e AD域中的完全限定域名。我过去在客户端上使用服务器计算机名时遇到过问题,而证书是使用全名颁发的。这一半解决了问题…如果在浏览器中键入FQDN时,我在本地托管服务和客户端,它在IE中工作。但是,当从代码实现服务。FQDN位于终结点中。这意味着问题是证书中的主机名(CN=xxx)不匹配以及用于连接到服务器的主机名。如果要在连接到服务时使用服务器完全限定名,则在生成自签名证书时需要使用该名称。还有一个名为Subject Alternative Names(SAN)的证书功能您可以在其中指定访问证书时可以使用的其他主机名。我需要在GOOGLE上搜索自签名SAN证书和Windows,以了解如何在Windows上执行该操作。@Heatfan还有通配符。当您拥有自己的CA时,您可以使用通常很昂贵的奇特功能。