我在计算机中托管了一个安全的WCF服务(https:// MachineName:sslport / services)。在不同的机器中部署相同服务的不同实例。从客户端应用程序,我能够通过代码(即)使用具有相同端点地址的ChannelFactory()连接到这些服务。但是,如果我尝试使用端点地址(https:// ipaddress:sslport / services)使用机器ipaddress替换机器名称来访问服务,我会收到一些错误,指出“无法建立信任关系”。我知道这是由ssl证书导致的错误,它无法建立信任关系。
是否有任何设置或任何可能的方法使其工作?如果有人知道,请指导。
答案 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;
}
您可以根据需要添加任意数量的地址。
希望这有帮助!