[Mono-list] Problem with mono and HtttpWebRequest (ssl)

MkProc matthias.ruck at mars-engineering.de
Mon Jun 15 13:59:18 UTC 2015

Hello everyone,

I have the following problem:
I need to check ssl-certificates and also read/output Websites as part of a
For Websites like www.google.com or www.twitter.com it works fine, 
but using my company’s site I always get exceptions like this:

System.Net.WebException: Error getting response stream (Write: The
authentication or decryption has failed.): SendFailure --->
System.IO.IOException: The authentication or decryption has failed. ---> 

Mono.Security.Protocol.Tls.TlsException: The authentication or decryption
has failed.
  at Mono.Security.Protocol.Tls.RecordProtocol.ProcessAlert (AlertLevel
alertLevel, AlertDescription alertDesc) [0x00000] in <filename unknown>:0
  at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback
(IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback
(IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult)
[0x00000] in <filename unknown>:0
  at System.Net.HttpWebRequest.GetResponse () [0x00000] in <filename
  at Testprogram.Program.Main (System.String[] args) [0x00000] in <filename

I already tried using mozroots to get all trusted certificates and also
added the site's certificates manually with certmgr,
but I still get the same errors over and over. I also tried different
machines and different versions of mono, the latest being 4.0.1, to no

Here’s the test program I tried

using System;
using System.Linq;
using System.Net;

namespace Testprogram
    internal class Program
        public static void Main(string[] args)
            ServicePointManager.ServerCertificateValidationCallback =
delegate { return true; };

            if (! args.Any() || string.IsNullOrEmpty(args[0])) return;
            var address = args[0];

                var request = (HttpWebRequest) WebRequest.Create("https://"
+ address);

                using (var response = (HttpWebResponse)

                    Console.WriteLine("Certificate recieved: " +
(request.ServicePoint.Certificate != null ? "true" : "false"));
            catch (Exception e)

The code works just fine under Windows without Mono, but with Mono, it works
on neither Windows nor Unix.
It also fails if I try to output the site using the following code:

var wr = WebRequest.Create("https://" + address);
var stream = wr.GetResponse().GetResponseStream();
Console.WriteLine(new StreamReader(stream, Encoding.UTF8).ReadToEnd());

The site’s certificate itself should be perfectly fine:

I also tried tlstest.exe, but it fails the same way.
Google also couldn't help me with this.


View this message in context: http://mono.1490590.n4.nabble.com/Problem-with-mono-and-HtttpWebRequest-ssl-tp4666196.html
Sent from the Mono - General mailing list archive at Nabble.com.

More information about the Mono-list mailing list