我使用WCF让客户端访问服务。我正在尝试使用TLS (https)访问终结点。我有私钥和公钥的证书。
如果我让服务的端点具有与证书名相同的主机名(“颁发给”),那么我就能够从客户端访问该服务。
如果“颁发给”和端点域名的名称不同,我会收到错误消息“无法使用授权为SSL/TLS安全通道建立信任关系”。我已经将证书添加到“受信任的根”、“个人”和“受信任的人”。在我的服务中,我使用了"PeerOrChainTrust“。
如果有人对此有任何想法,请告诉我。
谢谢,Jan
发布于 2009-02-20 13:03:48
在这种情况下,您需要在客户端为服务器定义信任策略。
在调用服务之前调用一次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;
}
发布于 2009-02-20 12:00:52
我不认为您可以覆盖证书名称是否与服务器名称匹配的检查。
一些代理允许您在警告后手动覆盖,但除非WCF具有禁用证书验证的设置,否则会带来所有危险。SSL设计的首要目的是让客户端能够验证它正在与哪个服务器通信,否则您将面临各种漏洞(包括中间人和假服务器)。
https://stackoverflow.com/questions/569320
复制相似问题