Подтвердить что ты не робот

Https POST/GET не работает над Mono

Я хочу выполнить HttpPost на малине, используя Mono + Restsharp.

Httpie вызов, который я пытаюсь воспроизвести в коде, выглядит примерно так:

 http POST https://XXXXX.azurewebsites.net/api/report key=value

Это код С#:

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);

Код работает нормально, он просто не работает. Ответ не содержит содержимого (ответ сервера с "Успехом" на httpie/MS.NET Framework).

Я уже узнал о материале сертификата на Mono. Выполнение

sudo certmgr -ssl -v -m "https://XXXXX.azurewebsites.net"

Сообщает мне, что он добавляет два сертификата в первый раз. Выполняя его снова, снова добавьте первый сертификат (и снова), как будто он не работает.

X.509 Сертификат v3    Выпущено из: C = IE, O = Балтимор, OU = CyberTrust, CN = Baltimore CyberTrust Root    Выпущено: C = US, S = Washington, L = Redmond, O = Microsoft Corporation, OU = Microsoft IT, CN = Microsoft IT SSL SHA2    Действительно с: 19/12/2013 20:07:32    Действительно до: 19/12/2017 20:06:55     ПРЕДУПРЕЖДЕНИЕ: подпись сертификата НЕВЕРНАЯИмпортировать этот сертификат в хранилище CA?

Если я подтвержу и повторю импорт, certmgr попросит меня снова импортировать. Как я могу получить сообщение http для работы?

4b9b3361

Ответ 1

Вы можете попытаться игнорировать сертификаты с помощью

ServicePointManager.ServerCertificateValidationCallback = (s, cert, chain, ssl) => true;

Обновить
как я могу видеть здесь существует на Mono также

Ответ 2

У него должно быть какое-то соединение с Mono. По умолчанию не доверяют ни одному сертификату ssl... хорошо проверить статью thess http://www.mono-project.com/docs/faq/security/ https://github.com/restsharp/RestSharp/issues/728 https://github.com/dotnet/roslyn/issues/7422

или Для анализа сертификата необходимо использовать openssl:

    openssl s_client -showcerts -connect www.domain.com:443
openssl x509 -text -noout -in some.crt