Как преобразовать код с PHP на C# (SSL запрос)?

У меня есть php код, который обращается к сервису по https
$ch = curl_init();
curl_setopt($curl, CURLOPT_URL, $this->server_url);
curl_setopt($curl, CURLOPT_HEADER, FALSE);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_USERAGENT, "User-Agent=Mozilla/5.0 Firefox/1.0.7");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSLCERT, $this->pem_file);   //path_file.pem
curl_setopt($curl, CURLOPT_SSLKEY, $this->key_file);    //path_file.key
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($curl, CURLOPT_CAINFO, $this->chain_file);  //path_file.crt
curl_setopt($curl, CURLOPT_POSTFIELDS, $this->post);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$result_curl = curl_exec($ch);
curl_close($ch);
echo $result_curl;


Мне нужно сделать все тоже самое на asp.net (C#) . Мои попытки не увенчались успехом. Вот какой код я использую
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
HttpWebRequest rq = (HttpWebRequest)WebRequest.Create(server_url);
rq.Method = "POST";
rq.KeepAlive = false;
rq.UserAgent = "User-Agent=Mozilla/5.0 Firefox/1.0.7";
rq.Proxy = null;
rq.ContentType = "application/www-form-urlencoded";
rq.ProtocolVersion = HttpVersion.Version10;

rq.ClientCertificates.Add(X509Certificate.CreateFromCertFile(chain_file));
rq.ClientCertificates.Add(new X509Certificate2(pem_file));
//rq.ClientCertificates.Add(X509Certificate.CreateFromCertFile(key_file));   ????
string dataToSend = String.Format("my data");
byte[] byteArray = Encoding.UTF8.GetBytes(dataToSend);
rq.ContentLength = byteArray.Length;
Stream dataStream = rq.GetRequestStream();


На последней строчки происходит ошибка:
"Запрос был прерван: Не удалось создать защищенный канал SSL/TLS"

Подскажите, как сделать запрос? Не могу понять куда в C# мне добавлять key_file.key?
П.С. В интернете есть много вопрос такой же тематики, но они без ответа или ответ не рабочий.
  • Вопрос задан
  • 3320 просмотров
Пригласить эксперта
Ответы на вопрос 1
Возможно это решит проблему: curl.haxx.se/mail/archive-2008-07/0038.html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы