我正在使用WCF为客户端访问服务。我试图用TLS(https)访问端点。我有私钥和公钥证书。
如果我的服务的终点具有与证书名称相同的主机名(“Issued To”),那么我可以从客户端访问该服务。
如果“发布到”和端点域名的名称不同,我会收到错误“无法为具有权限的SSL / TLS安全通道建立信任关系”。我已将证书添加到“受信任的根”,“个人”和“受信任的人”。在我的服务中,我使用了“PeerOrChainTrust”。
如果有人对此有任何想法,请告诉我。
谢谢, 扬
答案 0 :(得分:1)
在这种情况下,您需要在客户端定义服务器的信任策略,
在对服务进行任何调用之前,请先调用SetCertPolicy。
using System.Net;
using System.Security.Cryptography.X509Certificates;
public static void SetCertPolicy()
{
ServicePointManager.ServerCertificateValidationCallback += RemoteCertValidate;
}
private static bool RemoteCertValidate( object sender, X509Certificate cert, X509Chain chain,
SslPolicyErrors error )
{
// trust any cert!!!
return true;
}
答案 1 :(得分:-1)
我认为您不能覆盖证书名称是否与服务器名称匹配的检查。
某些代理允许您在警告后手动覆盖,但除非WCF具有禁用证书验证的设置,并带来所有危险。 SSL的设计首先是让客户能够验证与之通信的服务器,否则您将面临各种漏洞(包括中间人和虚假服务器)。