Получите доступ к серверу, защищенному SSL, используя https? - PullRequest
2 голосов
/ 05 июля 2019

Я разработчик на стороне клиента (Unity / C #), и у меня есть API, для которого требуется SSL-сертификат при подключении. У меня есть этот сертификат (.pfx). Когда я пытаюсь сделать запрос классом HttpWebRequest (код прослушивается ниже), у меня возникает ошибка (код 400: неверный запрос, не был отправлен обязательный сертификат SSL). Есть идеи, как это сделать?

Когда я помещаю свой URL в браузер, у меня появляется всплывающее окно, которое запрашивает сертификат, и я могу предоставить сертификат там, и тогда у меня есть результат!

Может быть, мне нужно использовать Stream из запроса?

Вот как выглядит запрос в Инспекторе: enter image description here

void Connect() {
    // I think it is not necessary
    ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(ValidateServerCertificate);

    // certificate creation
    certificate = new X509Certificate2(path, pass); 

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

    // adding certificate to request
    request.ClientCertificates.Add(certificate);
    request.Method = "GET";
    request.AuthenticationLevel = AuthenticationLevel.MutualAuthRequested;
    request.Accept = "application/json";

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
}

public static bool ValidateServerCertificate(
        object sender,
        System.Security.Cryptography.X509Certificates.X509Certificate certificate,
        X509Chain chain,
        System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
    return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...