是否可以强制WCF测试客户端接受自签名证书?
我有一个WCFWeb服务使用自签名证书在IIS7中运行(这是一个概念证明,可以确保这是我想要走的路线)。需要使用SSL 是否可以使用WCF测试客户端调试此服务,而不需要非自签名证书 当我尝试时,会出现以下错误: 错误:无法从中获取元数据 https:///Service1.svc 如果这是Windows(R)通信 你的基础服务 访问,请检查您是否有 已在上启用元数据发布 指定的地址。寻求帮助 元数据发布,请参阅 MSDN文档位于 Exchange错误URI: https:///Service1.svc 元数据包含一个 无法解决: 'https:///Service1.svc'. 无法建立信任关系 对于具有的SSL/TLS安全通道 权限“”。这个 基础连接已关闭: 无法建立信任关系 用于SSL/TLS安全通道。这个 远程证书无效 根据验证 procedure.HTTP获取错误URI: https:///Service1.svc 下载时出错 'https:///Service1.svc'. 基础连接已关闭: 无法建立信任关系 用于SSL/TLS安全通道。这个 远程证书无效 根据验证程序是否可以强制WCF测试客户端接受自签名证书?,wcf,ssl,ssl-certificate,self-signed,wcftestclient,Wcf,Ssl,Ssl Certificate,Self Signed,Wcftestclient,我有一个WCFWeb服务使用自签名证书在IIS7中运行(这是一个概念证明,可以确保这是我想要走的路线)。需要使用SSL 是否可以使用WCF测试客户端调试此服务,而不需要非自签名证书 当我尝试时,会出现以下错误: 错误:无法从中获取元数据 https:///Service1.svc 如果这是Windows(R)通信 你的基础服务 访问,请检查您是否有 已在上启用元数据发布 指定的地址。寻求帮助 元数据发布,请参阅 MSDN文档位于 Exchange错误URI: https:///Service1.
编辑:这个问题特别是关于使用WCF测试客户端使用自签名证书测试已经通过SSL保护的web服务。服务器已经设置为接受提供的任何证书,我看不出有什么方法可以对WCF测试客户端执行此操作。您可以提供自己的方法来验证证书 试试这个:
ServicePointManager.ServerCertificateValidationCallback +=
new System.Net.Security.RemoteCertificateValidationCallback(EasyCertCheck);
回电:
bool EasyCertCheck(object sender, X509Certificate cert,
X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
return true;
}
如果将WCF测试客户端替换为,则应该能够做到这一点。它是免费的,并且比MS的测试客户端更灵活。。。例如,如果您正在进行用户名验证,它将允许您指定用户名和密码。在我的案例中,来自帮助的答案。请确保使用证书期望的确切计算机名称。例如,
machine/service.svc
可能不起作用,而machine.domain/service.svc
-起作用。您可以在开发区域创建一个非自签名证书,然后在IIS中使用此证书来应用SSL。这些步骤是:
现在,您只需将
server.pfx
导入IIS并设置网站绑定以使用此证书,还需要在本地计算机中安装CA.cer
,\受信任的根证书颁发机构
存储在服务器和客户端中,通过执行此操作,WCF客户端将通过HTTPS没有任何问题。要回答您的问题。。。下面是如何强制WCF测试客户端接受自签名证书
using (ServiceReference1.Service1Client proxy = new ServiceReference1.Service1Client())
{
System.Net.Security.RemoteCertificateValidationCallback callBack = (sender, certificate, chain, sslPolicyErrors) => true;
ServicePointManager.ServerCertificateValidationCallback += callBack;
Console.WriteLine(proxy.GetData(35));
ServicePointManager.ServerCertificateValidationCallback -= callBack;
}
是的,这是可能的
只需从服务()下载生成的WSDL,并在WCF测试客户端中添加服务时提供此文件的路径。我看不到任何方法将此代码添加到WCF测试客户端(我不控制代码)。我已经在自己的代码(服务器端)中添加了此调用。当然,如果您试图强制任何其他C#WCF客户端接受自签名安全证书,那么这正是正确的方法。您真漂亮!还有一个技巧是你可能会得到一个无效的密码错误,你可以通过在最后一行的命令行上传递密码来解决:pvk2pfx-pvk server.pvk-pi“yourpw”-spc server.cer-pfx server.pfx-po“yourpw”我在服务器上添加pfx时遇到了一个关于错误密码的错误,但我只是跳过了输入密码,一切似乎都正常。如果你和我一样,不喜欢下载你从未听说过的软件,下面是Visual Studio杂志对WFCSForm的评论。我的是另一种方式(在machine.domain中,当机器刚刚工作时失败)。谢谢我想他指的是WCFTestClient.exe。不管怎样,你的回答帮助了我的WCF测试客户端项目。