Как проверить, использует ли приложение толстого клиента на основе WPF Transport Layer Security(TLS) или нет
У нас есть настольное толстое клиентское приложение на базе Windows с внешним интерфейсом, созданным на основе WPF+Telerik, и внутренним обменом данными с использованием веб-служб WCF.
Сейчас общение происходит через SSL3.0
Из-за недавних проблем безопасности с SSL3.0 было решено использовать TLS 1.2 или TLS 1.1 на стороне сервера, чтобы форсировать весь обмен данными только через TLS.
Мы попытались проверить основную связь с веб-сервисом, используя Fiddler и Wireshark. Мы можем видеть, что 200 запросов "Tunnel to" происходят по TLS.
Но есть ли другой способ перекрестной проверки, если TLS явно или неявно используется приложением Thick Client для запросов Web Service...?
Windows установила исправление TLS 15 декабря 2014 г., и оно установлено на серверах приложений Windows 2008 R2. SSL3.0 еще не отключен как запасной вариант, но явно TLS не включен. Но статьи MS KB говорят, что TLS будет иметь приоритет (TLS1.2>TLS1.1>TLS1.0>SSL3.0)
Обновление безопасности (статья базы знаний KB2992611, за которым следует другое обновление KB3018238) было установлено 9 декабря 2014 года, и оно было установлено с помощью HP Monthly Patching 15 декабря 2014 года
Пожалуйста, проверьте следующие ссылки для более подробной информации о патчах безопасности и их влиянии. Официальные обновления Microsoft для исправления уязвимости SSLv3.0 https://support2.microsoft.com/kb/2992611/en-us Link2: technet.microsoft.com/en-us/library/security/ms14-066.aspx
Дополнительная информация о поддержке TLS Link3: blogs.msdn.com/b/kaushal/archive/2011/10/02/support-for-ssl-tls-protocols-on-windows.aspx
Проблемы, выявленные с помощью начального исправления KB2992611 и немедленного исправления через KB3018238 Link4 infoworld.com/article/2848574/operating-systems/microsoft-botches-kb-2992611-schannel-patch-tls-alert-code-40-slow-sql-server- блок-МИС-sites.html
1 ответ
Если вы намереваетесь проверить, включен ли TLS на сервере / можно ли договориться, то вы можете написать некоторый пробный код с помощью TcpClient
а также SSLStream
форсировать передачу TLS и посмотреть, действительно ли это было согласовано. Увидеть:
увидеть
SendMessageToServer
в https://www.simple-talk.com/dotnet/.net-framework/tlsssl-and-.net-framework-4.0/Как создать SSLStream, который использует Ssl3 вместо Tls (измените это, чтобы заставить TLS)
Если вы хотите предотвратить откат SSL для всех запросов "https", отправленных любым кодом.NET, установите его следующим образом:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
Примечание: применяется к AppDomain
и так повлияет на любой HttpWebRequests
сделано в том же AppDomain.
Как отключить резервный SSL и использовать только TLS для исходящих соединений в.NET? (Смягчение пуделя)
Установка значения запроса для ServicePointManager.SecurityProtocol
Установите SecurityProtocol (Ssl3 или TLS) в.net HttpWebRequest для каждого запроса.
Если вы хотите более явный / расширенный контроль стека каналов WCF, который используется для связи с сервером (так что вы можете использовать только безопасность на уровне транспорта TLS), вы можете написать свой собственный StreamUpgradeProvider
,
(Я "думаю", вы бы создали свой собственный Stream
который использует TLS через использование TcpClient
а также SSlStream
... а затем вы сделаете обновление канала, чтобы использовать его...(может быть неправильно).... или это вы оберните Stream
дано вам в обновлении с SSlStream
)