Estoy tratando de portar una aplicación de cliente WCF existente para ejecutar en Linux bajo Mono. En este momento estoy probando todo, averiguando qué funciona en Mono y qué no.WCF Mono - BasicHttpBinding con SSL
El cliente hace una llamada muy simple sobre basicHttpBinding. Funciona muy bien, hasta que habilite SSL (es decir, especifique BasicHttpSecurityMode.Transport en el enlace).
- se ejecutan en .NET en Windows, funciona muy bien
- Correr en Mono en Ubuntu 9.10/Mono 2.6 me sale el siguiente error:
Exception in async operation: 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: Invalid certificate received from server. Error code: 0xffffffff800b010a
He leído el Mono security FAQ; sin embargo, el certificado SSL en el servidor proviene de una CA raíz (un certificado comprado) emitido por Equifax Secure Certificate Authority. Ejecuté la herramienta TlsTest en la instalación de Ubuntu contra la URL .svc y no hay problemas/errores. También puedo golpear bien el servicio en Firefox (sin advertencias de seguridad).
¿Qué me estoy perdiendo?
Gracias por su respuesta! Probé usando una WebRequest simple con el mismo resultado. Sin embargo, creo que ahora veo el problema: instalé el Mono 2.6 lado a lado con el paquete Mono 2.4 que se incluye con Ubuntu 9.10. Tenía que hacer esto, porque mis llamadas WCF HTTPS siempre fallarían en 2.4 (obtenía una NotImplementedException de HttpsTransportBindingElement). Hice una aplicación de prueba simple que hace una simple WebRequest. Cuando ejecuto en 2.6, falla con un certificado no válido. Cuando lo ejecuto en 2.4, ¡funciona! Así que, obviamente, mi certificado no es visible para Mono 2.6 ..... – TheNextman