c# - Https POST/GET no funciona en Mono
ssl raspberry-pi (3)
Debe tener alguna conexión con Mono. De manera predeterminada, no confía en ningún certificado ssl ... revise el artículo http://www.mono-project.com/docs/faq/security/ https://github.com/restsharp/RestSharp/issues/728 https://github.com/dotnet/roslyn/issues/7422
o necesita usar openssl para analizar el certificado:
openssl s_client -showcerts -connect www.domain.com:443
openssl x509 -text -noout -in some.crt
Quiero ejecutar un HttpPost en una frambuesa usando Mono + Restsharp.
La llamada Httpie que intento reproducir en código se parece a esto:
http POST https://XXXXX.azurewebsites.net/api/report key=value
Este es el código C #:
RestClient nodeRed = new RestClient("http://XXXXX.azurewebsites.net/");
var request = new RestRequest("api/report", Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddBody(new { Timestamp = DateTime.Now, Data = "Test" });
request.Timeout = 5000;
var response = nodeRed.Execute(request);
El código funciona bien, simplemente no funciona. La Respuesta no contiene ningún contenido (respuesta del servidor con "Éxito" en httpie / MS .NET Framework).
Ya me enteré de las cosas del Certificado en Mono. Corriendo
sudo certmgr -ssl -v -m "https://XXXXX.azurewebsites.net"
Me dice que agrega dos certificados la primera vez. Ejecutarlo de nuevo agrega el primer Certificado nuevamente (y nuevamente) como si no estuviera funcionando.
X.509 Certificado v3 emitido desde: C = IE, O = Baltimore, OU = CyberTrust, CN = Baltimore CyberTrust Root Emitido para: C = EE. UU., S = Washington, L = Redmond, O = Microsoft Corporation, OU = Microsoft IT, CN = Microsoft IT SSL SHA2 Válido desde: 19/12/2013 20:07:32 Válido hasta: 19/12/2017 20:06:55 ADVERTENCIA: ¿La firma del certificado es VÁLIDA? ¿ Importar este certificado en la tienda de CA?
Si confirmo y repito la importación, certmgr me pide que vuelva a importar. ¿Cómo puedo hacer que la publicación http funcione?
Hola amigo, tengo una línea de código que funciona para otro Lugar que funciona bien. Puedes probar esto:
Puedes intentar ignorar certificados con eso
ServicePointManager.ServerCertificateValidationCallback = (s, cert, chain, ssl) => true;
Actualizar
Como puedo ver here existe en Mono