Hmm.. a short night's sleep seems to have changed the mood of my devices somehow. Now they connect to https://www.google.com with my code (unchanged).
But it's still a nogo for my internal service. The internal service provides an actual web interface (automated help provided by WCF), which is accessible from the phone's browser (after the usual certificate warning), so I suppose WCF services do something different in connection establishment that mono cannot handle. Since I cannot make the internal service publicly accessible, I wonder what would help trace down the problem. I went ahead installed mono 4 windows and created a simple program. After the usual "hey, this works with Microsoft.Net but won't even compile in Xamarin Studio" confusion, I came up with this (see end of mail). It works if I run it with Microsoft.Net, and it throws a pretty similar error (see very end of mail) running it with Mono, thus confirming that the problem lies indeed with Mono's handling of the encrypted request. I guess I have no choice but to write a repro server project (which has to be run on windows running microsoft's .net runtime) Regards Stephan public static void Main (string[] args) { Console.WriteLine ("Hello World!"); ServicePointManager.ServerCertificateValidationCallback += validatedCertificate; string address = @"https://wsklo2059.ch.nextiraone-eu.ned:8090/IsAlive";; Console.WriteLine("Sending request to " + address); HttpWebRequest req = WebRequest.Create(new Uri(address)) as HttpWebRequest; //req.Address = new Uri(address) //HttpWebRequest req = new HttpWebRequest(new Uri(address)); WebResponse res = req.GetResponse(); Console.WriteLine("Response received"); } private static bool validatedCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { Console.WriteLine("validate cert called for " + certificate.Subject); return true; } And the error (validatedCertificate is never fired): Unhandled Exception: System.Net.WebException: Error getting response stream (Wri te: BeginWrite failure): SendFailure ---> System.IO.IOException: BeginWrite fail ure at System.Net.Sockets.NetworkStream.BeginWrite (System.Byte[] buffer, Int32 of fset, Int32 size, System.AsyncCallback callback, System.Object state) [0x0007c] in C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.9\mcs\class\System\System.Net.S ockets\NetworkStream.cs:258 at Mono.Security.Protocol.Tls.RecordProtocol.BeginSendRecord (ContentType cont entType, System.Byte[] recordData, System.AsyncCallback callback, System.Object state) [0x00026] in C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.9\mcs\class\Mo no.Security\Mono.Security.Protocol.Tls\RecordProtocol.cs:706 at Mono.Security.Protocol.Tls.RecordProtocol.SendRecord (ContentType contentTy pe, System.Byte[] recordData) [0x00000] in C:\cygwin\tmp\monobuild\build\BUILD\m ono-2.10.9\mcs\class\Mono.Security\Mono.Security.Protocol.Tls\RecordProtocol.cs: 727 at Mono.Security.Protocol.Tls.RecordProtocol.SendAlert (Mono.Security.Protocol .Tls.Alert alert) [0x00027] in C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.9\m cs\class\Mono.Security\Mono.Security.Protocol.Tls\RecordProtocol.cs:625 at Mono.Security.Protocol.Tls.RecordProtocol.SendAlert (AlertDescription descr iption) [0x00000] in C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.9\mcs\class\M ono.Security\Mono.Security.Protocol.Tls\RecordProtocol.cs:596 at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResu lt asyncResult) [0x00037] in C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.9\mcs \class\Mono.Security\Mono.Security.Protocol.Tls\SslStreamBase.cs:104 --- End of inner exception stack trace --- at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x0006 c] in C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.9\mcs\class\System\System.Ne t\HttpWebRequest.cs:831 at System.Net.HttpWebRequest.GetResponse () [0x0000e] in C:\cygwin\tmp\monobui ld\build\BUILD\mono-2.10.9\mcs\class\System\System.Net\HttpWebRequest.cs:836 at MonoHttpWebRequest.MainClass.Main (System.String[] args) [0x00000] in <file name unknown>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.Net.WebException: Error getting respon se stream (Write: BeginWrite failure): SendFailure ---> System.IO.IOException: B eginWrite failure at System.Net.Sockets.NetworkStream.BeginWrite (System.Byte[] buffer, Int32 of fset, Int32 size, System.AsyncCallback callback, System.Object state) [0x0007c] in C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.9\mcs\class\System\System.Net.S ockets\NetworkStream.cs:258 at Mono.Security.Protocol.Tls.RecordProtocol.BeginSendRecord (ContentType cont entType, System.Byte[] recordData, System.AsyncCallback callback, System.Object state) [0x00026] in C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.9\mcs\class\Mo no.Security\Mono.Security.Protocol.Tls\RecordProtocol.cs:706 at Mono.Security.Protocol.Tls.RecordProtocol.SendRecord (ContentType contentTy pe, System.Byte[] recordData) [0x00000] in C:\cygwin\tmp\monobuild\build\BUILD\m ono-2.10.9\mcs\class\Mono.Security\Mono.Security.Protocol.Tls\RecordProtocol.cs: 727 at Mono.Security.Protocol.Tls.RecordProtocol.SendAlert (Mono.Security.Protocol .Tls.Alert alert) [0x00027] in C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.9\m cs\class\Mono.Security\Mono.Security.Protocol.Tls\RecordProtocol.cs:625 at Mono.Security.Protocol.Tls.RecordProtocol.SendAlert (AlertDescription descr iption) [0x00000] in C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.9\mcs\class\M ono.Security\Mono.Security.Protocol.Tls\RecordProtocol.cs:596 at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResu lt asyncResult) [0x00037] in C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.9\mcs \class\Mono.Security\Mono.Security.Protocol.Tls\SslStreamBase.cs:104 --- End of inner exception stack trace --- at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x0006 c] in C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.9\mcs\class\System\System.Ne t\HttpWebRequest.cs:831 at System.Net.HttpWebRequest.GetResponse () [0x0000e] in C:\cygwin\tmp\monobui ld\build\BUILD\mono-2.10.9\mcs\class\System\System.Net\HttpWebRequest.cs:836 at MonoHttpWebRequest.MainClass.Main (System.String[] args) [0x00000] in <file name unknown>:0 -- View this message in context: http://mono-for-android.1047100.n5.nabble.com/handling-webservices-with-self-signed-certificates-tp5713085p5713099.html Sent from the Mono for Android mailing list archive at Nabble.com. _______________________________________________ Monodroid mailing list Monodroid@lists.ximian.com UNSUBSCRIBE INFORMATION: http://lists.ximian.com/mailman/listinfo/monodroid