Code Copied

调用WCF服务出现认证错误

场景描述

我在一台azure服务器上部署了一套WCF服务,以IIS作为WCF的宿主(Host),IIS上安装了SSL证书,外部访问WCF服务通过HTTPS协议。
另外,我有一个ASP.NET的站点,部署在另一台azure服务器上,该站点添加了这个WCF服务引用。

这个ASP.NET站点的一些画面的后置代码调用了服务的操作,在调用时却出现一个认证错误。
即使将证书安装在【受新人的根证书颁发机构】下,这个错误仍然会出现。

image

具体的错误信息如下:

The remote certificate is invalid according to the validation procedure.
image

错误根源

画面提示的错误信息很明显仍然是因为认证失败导致的,在调查了windows的认证安装方式之后,该问题的根源终于被找到。

Windows在安装证书时有2种存储方式:一种是Current User的方式,另一种是Local Computer。
在Windows 7或者Windows 2008 R2上不会提示用户证书以何种方式存储,默认都会存储在Current User下。

但是在Windows 2012以上的版本,安装证书时会提示用户选择存储位置,这也是Windows的一些细节改进。

image

解决方法

想必说到这里,我们也已经很清楚解决方法了,在不升级操作系统的情况下,将证书以Local Computer的方式安装
下面请看在Windows 7或Windows Server 2008 R2如何将证书安装到Local Computer下。

安装步骤

打开命令行,输入mmc开启控制台

image

在控制台菜单中选择File → Add/Remove Snap-in…选项

image

在可用的snap-ins中选中Certificates,然后点击中间的Add>按钮

image

点击OK按钮

image

选择Computer account,点击Next按钮后再选择Local computer,点击Finish按钮。

imageimage

经过上面的步骤,在控制台打开了Certificates(Local Computer)。
展开节点,找到Trusted Root Certification Authorities下的Certificates节点,然后右键All Tasks → Import…

image

打开证书导入向导,选择要导入的证书文件,直至导入完成。

imageimage

imageimage

证书导入成功

image

文档下载

以上的截图已经整理到文件,下载链接:http://blog.64cm.com/source/WCF/添加证书到Local Computer.xlsx