Чтобы соответствовать требованиям PCI, нам пришлось полностью отключить TLS 1.0 от наших серверов.С тех пор, как я это сделал, мне пришлось указывать, какой протокол использовать при отправке веб-запросов, чтобы все работало.Однако одна конкретная проблема сохраняется.Даже когда я указываю протокол, я все равно получаю ошибку, указанную в заголовке.
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
httpWebRequest.KeepAlive = false;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(body);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
return result;
}
Сама ошибка генерируется из строки -
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
Как видите, яЯ рекомендую использовать TLS 1.1 или 1.2 (изначально у меня был только 1.2, но думал, что разрешить 1.1 тоже поможет, но не помогло).
Дополнительно (не уверен, уместно ли это или нет)этот конкретный фрагмент кода всегда вызывает API, который мы также запускаем и поддерживаем, поэтому, по сути, сервер вызывает себя для получения необходимой информации.
И у меня быстро заканчиваются идеичто я могу попытаться отладить или исправить, так что любая помощь там будет с благодарностью.