Всем привет, пытаюсь уже пару дней решить нерешаемое :) Есть api, на который ходит POST request c авторизацией сертификатом:
var userConnection = Get("UserConnection");
// переменная для сохранения тестового результат
string httpResponseData = "";
//тащим из системной настройки с типом "бинарные данные" содержимое сертификата
byte[] _certByte = (byte[])Terrasoft.Core.Configuration.SysSettings.GetValue(userConnection, "UsrIpsmsCertificate");
//из него реконструируем сертификат
X509Certificate2 _certificate = new X509Certificate2(_certByte);
// создаем тело POST запроса
IpSMS _ipSMS = new IpSMS();
_ipSMS.action = "ping";
_ipSMS.baID = "populo";
string output = JsonConvert.SerializeObject(_ipSMS);
//инициализируем uri
string uri = "https://www.xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
//определяем протоколы ServicePointManager, не контролируем валидность сертификата
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12
| SecurityProtocolType.Ssl3;
ServicePointManager.Expect100Continue = true;
ServicePointManager.ServerCertificateValidationCallback +=
(sender, cert, chain, error) => true;
//выполняем request
var httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "text/json";
httpWebRequest.ClientCertificates.Add(_certificate);
try {
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) {
streamWriter.Write(output);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) {
httpResponseData += streamReader.ReadToEnd().ToString();
}
} catch (Exception ex) {
httpResponseData += ex.InnerException == null ? ex.Message : ex.InnerException.Message;
}
//как-то выводим httpResponseData Результат:
The request was aborted: Could not create SSL/TLS secure channel.
на сервере-приемнике:
] AH02261: Re-negotiation handshake failed
вот честно скажу, с сертификатами опыта мало, но чисто визуально все ок. И в чем тогда косяк?!
Нравится
1 комментарий
11 октября 2021 12:02
Дмитрий, добрый день!
Очень похоже на то, что вы используете Apache и его нужно обновить. Рекомендую ознакомится с этим обсуждением.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать