Ao acessar no Chrome o endereço de um webservice que esteja com o certificado SSL inválido você receberá um alerta de segurança como:
Mensagem exibida no Chrome:
Ao tentar acessar dados desse webservice através do WCF será retornada a seguinte exception:
Provavelmente o arquivo de config do seu projeto tem uma entrada de configuração desse webservice semelhante a essa:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="TesteWebserviceServiceSoap" />
</bindings>
<client>
<endpoint address="https://TesteWebservice.com.br" binding="basicHttpBinding" bindingConfiguration="TesteWebserviceServiceSoap" contract="TesteWebserviceWebservice.TesteWebserviceServiceSoap" name="TesteWebserviceServiceSoap" />
</client>
</system.serviceModel>
E o código de chamada do webservice será parecido com esse:
TesteWebservice.TesteWebserviceClient ws = new TesteWebservice.TesteWebserviceClient();
ws.Teste();
Para que o erro do certificado seja ignorado e qualquer certificado seja aceito, você deve alterar a entrada do web.config da seguinte forma:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="TesteWebserviceServiceSoap">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</bindings>
<client>
<endpoint address="https://TesteWebservice.com.br" binding="basicHttpBinding" bindingConfiguration="TesteWebserviceServiceSoap" contract="TesteWebserviceWebservice.TesteWebserviceServiceSoap" name="TesteWebserviceServiceSoap" />
</client>
</system.serviceModel>
E adicionar o seguinte código em algum ponto da sua aplicação que seja executado antes da chamada do webservice:
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(TrustAllCertificates);
public static bool TrustAllCertificates(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true; //Retorna que todos os certificados são válidos
}