SSL错误RemoteCertificateNameMismatch

时间:2009-02-20 11:54:16

标签: wcf ssl

我正在使用WCF为客户端访问服务。我试图用TLS(https)访问端点。我有私钥和公钥证书。

如果我的服务的终点具有与证书名称相同的主机名(“Issued To”),那么我可以从客户端访问该服务。

如果“发布到”和端点域名的名称不同,我会收到错误“无法为具有权限的SSL / TLS安全通道建立信任关系”。我已将证书添加到“受信任的根”,“个人”和“受信任的人”。在我的服务中,我使用了“PeerOrChainTrust”。

如果有人对此有任何想法,请告诉我。

谢谢, 扬

2 个答案:

答案 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的设计首先是让客户能够验证与之通信的服务器,否则您将面临各种漏洞(包括中间人和虚假服务器)。