如何使用托管服务的主机的IP连接到WCF服务?

时间:2011-11-12 08:42:54

标签: wcf

我在计算机中托管了一个安全的WCF服务(https:// MachineName:sslport / services)。在不同的机器中部署相同服务的不同实例。从客户端应用程序,我能够通过代码(即)使用具有相同端点地址的ChannelFactory()连接到这些服务。但是,如果我尝试使用端点地址(https:// ipaddress:sslport / services)使用机器ipaddress替换机器名称来访问服务,我会收到一些错误,指出“无法建立信任关系”。我知道这是由ssl证书导致的错误,它无法建立信任关系。

是否有任何设置或任何可能的方法使其工作?如果有人知道,请指导。

2 个答案:

答案 0 :(得分:1)

SSL证书基于名称,这意味着当使用IP地址而不是名称尝试时,SSL证书的验证将失败。

您可以将验证更改为始终成功 - 这不是配置,而是大约1-5行代码...但这绝对不是要走的路,因为它违背了避免SSL证书的全部目的首先,因为任何和所有SSL证书(伪造,自签名等)将被接受为罚款......

也许如果你告诉为什么你想要这样做,那就有更好的选择。

答案 1 :(得分:0)

我使用以下内容允许我绕过默认身份验证...

在我连接之前,我连接了这个CallBack。

    System.Net.ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(ValidateRemoteCertificate);

然后在'ValidatRemoteCertificate'

    private static bool ValidateRemoteCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors policyErrors)
    {
        if (policyErrors == SslPolicyErrors.None) return true;
        if (cert.Subject == "CN=whatever.address.com") return true;
        return false;
    }

您可以根据需要添加任意数量的地址。

希望这有帮助!