Mono Frustrations: "The authentication or decryption has failed." - Wed, Jul 1, 2015
Often calling the AuthenticateAsClient
method of an SslStream
results in the “The authentication or decryption has failed.” error, because Mono cannot verify the certificate. As a last resort, the error can be circumvented by disabling the certificate validation by adding the following line to the code:
ServicePointManager.ServerCertificateValidationCallback += (o, certificate, chain, errors) => true;
If you are creating the SslStream
in a using block, you can do this instead:
using (SslStream s = new SslStream(tcpClient.GetStream(), false, new RemoteCertificateValidationCallback((o, certificate, chain, errors) => true)))
{
s.AuthenticateAsClient(uri.Host, null, SslProtocols.Tls, false);
...
}