У меня есть 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?
П.С. В интернете есть много вопрос такой же тематики, но они без ответа или ответ не рабочий.