У меня есть простое консольное приложение, которое подключается к веб-службе, которая использует проверку подлинности сертификата. Я использую протокол Tls1.2. Он работает, как и ожидалось, когда выполняется из моей коробки разработки, но получает исключение при выполнении с сервера.
Я уже проверил, что клиентский сертификат правильно установлен на сервере и может быть доступен приложению. Кроме того, я также проверил, что TLS 1.2 включен на сервере, а IP-адрес сервера занесен в белый список в веб-сервисах. Буквально все настройки такие же, кроме коробки.
Я озадачен тем, что он работает на моем компьютере для разработки, но не на сервере. Сообщение об ошибке, которое я получаю на сервере:
Произошла ошибка при отправке запроса. Запрос был прерван: не удалось создать безопасный канал SSL / TLS
Любое понимание высоко ценится.
X509Certificate cert = Utilities.GetClientCertificate();
ClinicalTrialMapping ctContent = null;
Console.WriteLine(cert);
if (cert != null)
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Console.WriteLine(ServicePointManager.SecurityProtocol);
WebRequestHandler handler = new WebRequestHandler();
handler.ClientCertificates.Add(cert);
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
using (var client = new HttpClient(handler))
{
string baseUrl = ConfigurationManager.AppSettings["BaseUrl"];
client.BaseAddress = new Uri(baseUrl);
client.DefaultRequestHeaders.Accept.Clear();
try
{
string url = "test.php";
HttpResponseMessage response = await
client.GetAsync(url);
}
catch (Exception ex)
{
throw ex;
}