2016-01-15 2 views
3

У меня есть сайт C# .net, и мой сайт запрашивает банк для платежной системы. Все было хорошо около 3-4 дней назад, но теперь я не могу запросить банковский сервер с моего сервера. Я получаю эту ошибку: «Основное соединение было закрыто: при отправке произошла непредвиденная ошибка». когда я пытаюсь обратиться в банк.Ошибка TLS 1.2 с C# .Net: базовое соединение было закрыто: произошла непредвиденная ошибка при отправке

Я получаю эту ошибку, когда запрашиваю ее из .net C# кода.

"The underlying connection was closed: An unexpected error occurred on a send." 

Вот мой код;

public string Send(string request) 
{ 
    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 

    try 
    { 
     string postData = ""; 
     string responseData = ""; 
     System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("ISO-8859-9"); 

     postData = "https://xxxxxxxxx.aspx?data=[DATA]"; 
     postData = postData.Replace("[DATA]", request); 
     HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(postData); 
     webReq.Timeout = 60000; 
     webReq.KeepAlive = false; 
     webReq.Method = "GET"; 
     WebResponse webResp = webReq.GetResponse(); 
     Stream respStream = webResp.GetResponseStream(); 

     byte[] buffer = new byte[10000]; 
     int len = 0, r = 1; 
     while (r > 0) 
     { 
      r = respStream.Read(buffer, len, 10000 - len); 
      len += r; 
     } 
     respStream.Close(); 
     responseData = encoding.GetString(buffer, 0, len).Replace("\r", "").Replace("\n", ""); 
     return responseData; 
    } 
    catch (System.Net.Sockets.SocketException ex) 
    { 
     return null; 
    } 
    catch (Exception ex) 
    { 
     return null; 
    } 
} 

Я получаю эту ошибку, когда я пытаюсь из IE 11.

enter image description here enter image description here

Когда я пытаюсь IE 11, EventViewer показывает ошибку.

A fatal alert was received from the remote endpoint. The TLS protocol defined fatal alert code is 40. 

Но Существует интересная вещь здесь, Chrome и Firefox может пойти тот же адрес.

enter image description here

Спасибо за помощь!

+0

что-то изменилось на ваших серверах или в вашем приложении незадолго до сбоев? были ли применены какие-либо обновления Windows? вы уверены, что проблема не на стороне банка? – user1666620

+0

Я уверен, что проблема не в стороне банка. Если проблема связана с банком, как работать с хромом и firefox. Я поддерживал высокий банк и обновлял ms14-066 последний раз. Моя последняя дата транзакции успеха - 5 декабря. –

+0

, если вы осуществили обновление в прошлом месяце, и это был месяц с момента последней успешной транзакции, тогда вам может понадобиться откат обновления до предыдущей версии и посмотреть, работает ли это. – user1666620

ответ

1

Возможно, веб-сайт банка изменил свой сертификат SSL или иным образом изменил его конфигурацию безопасности, так что когда ваш клиент отправляет список значений cipher_suites, которые он может принять в своем первоначальном SSL-квитировании/согласовании «Клиент Hello», сообщения, нет соответствия с тем, что банк (сейчас) готов поддержать.

У Chrome и Firefox (по-видимому) есть свои собственные значения cipher_suites, которые не зависят от настроенных значений вашей операционной системы, поэтому они все еще работают, когда Internet Explorer не работает.

Я предлагаю загрузить Microsoft Message Analyzer и использовать его для запуска трассировки по согласованию SSL, возникающего при попытке установить SSL-соединение с веб-сайтом банка (в вашем приложении C# или в Internet Explorer). Затем запустите другую трассировку на то, что происходит, когда согласование SSL завершается успешно (в Firefox или Chrome).

Надеюсь, вы увидите некоторую разницу между двумя сообщениями Hello Hello, которые позволят вам определить, что связано с ошибкой согласования SSL, вызвав ошибку. Затем вы сможете внести изменения в конфигурацию Windows, что позволит ей добиться успеха.IISCrypto - отличный инструмент для этого (даже для клиентских ПК, несмотря на имя «IIS»).

Следующие два ключа реестра Windows, регулируют значения cipher_suites, что ваш компьютер будет использовать:

  • HKLM \ SOFTWARE \ Policies \ Microsoft \ Cryptography \ Configuration \ SSL \ 00010002
  • HKLM \ SYSTEM \ CurrentControlSet \ Control \ Cryptography \ Configuration \ Local \ SSL \ 00010002

Вот полная рецензия о том, как я решил очень похожую проблему с вашим ранее сегодня: http://blog.jonschneider.com/2016/08/fix-ssl-handshaking-error-in-windows.html

Смежные вопросы

 Смежные вопросы