Мне нужно доказать, что настройки шифрования, которые у нас есть в нашей строке подключения к приложению, работают.
Каким будет самый простой способ проверить, что трафик с нашего веб-сайта на SQL Server на самом деле зашифрован?
Мне нужно доказать, что настройки шифрования, которые у нас есть в нашей строке подключения к приложению, работают.
Каким будет самый простой способ проверить, что трафик с нашего веб-сайта на SQL Server на самом деле зашифрован?
Вы можете использовать что-то вроде Wireshark для просмотра пакетов при их передаче по сети
Вы проверяете столбец encrypt_option
в sys.dm_exec_connections
DMV. Таким образом, вы не можете только доказать, что зашифрованы, но вы можете также проверить в своем приложении во время запуска. Чтобы обеспечить шифрование, вы следуете методам, описанным в этом MSDN How To: Включить зашифрованные подключения к движку базы данных. Если клиент или сервер принудительно шифрует и предоставляет сертификат, и клиент принимает сертификат сервера, соединение будет зашифровано. Чтобы проверить, что трафик зашифрован, вы можете использовать встроенный инструмент netmon.exe(должен быть установлен из компонентов ad/remove system), загрузить улучшенную Microsoft Network Монитор 3.2 или другие сторонние инструменты.
В качестве альтернативы сайт развертывания может обеспечить шифрование IPSec.
Я бы установил шифрование Force Protocol в true и Trust Server Certificate в true в строке подключения db. Сервер не должен устанавливать соединение, если он не может предоставить вам зашифрованное соединение по запросу. Существует статья которая охватывает шифрование с использованием SQL Server 2005 и более поздних версий.
Простым тестом является попытка соединения с шифрованием и без него и сбой при сбое нежелательного типа соединения. затем его до DBA, IT или вы настроите сервер в соответствии с вашими требованиями.
Существует еще один очень недооцененный инструмент от самой Microsoft: "Microsoft Network Monitor". В основном это очень похоже на wirehark, за исключением того, что некоторые конкретные протоколы MS имеют лучшую поддержку синтаксического анализа и визуализации, чем сама wirehark, и, очевидно, она будет работать только под окнами;-).
Инструмент довольно старый и выглядит заброшенным (до сих пор он не видел более новой версии), но по-прежнему выполняет хорошую работу, и грамматика для определения новых протоколов довольно аккуратная/интересная, поэтому у этого все еще есть много возможностей для будущее.
Пример анализа - запись фильтруется для TDS - поэтому другие пакеты в основном удаляются:
Это также верно для соединений сервера sql. MNM может даже визуализировать результаты, идущие по проводу - довольно аккуратно. Тем не менее wirehark, как упоминалось выше, будет достаточным для проверки шифрования и применения сертификатов на самом проводе. Значит, он полностью понимает TDS-Protocoll.
Обработка TLS
Также с расширением (так называемые эксперты) "NmDecrypt" и правильными сертификатами (включая закрытые ключи) - можно расшифровать протоколлы - довольно приятно для TDS, который использует TLS INSIDE TDS - неудивительно - никто не имеет действительно реализовано, что все же в качестве полностью поддерживаемого протоколла для wirehark;)
Ссылки для инструментов:
Чтобы гарантировать, что шифрование используется, вам необходимо включить параметр шифрования силы на сервере.
Шифрование на стороне клиента не является обязательным. Сторона сервера обязательна.
При запуске службы SQL Server она прекратится, если не сможет прочитать сертификат или есть другие препятствия. Он не будет принимать незашифрованные соединения.
Чтобы ответить, я использовал пакетный сниффер, первый из которых использовал шифрование для проверки, тогда я просто полагался на то, что шифрование на стороне сервера является обязательным, и SQL не запускается.
Имейте в виду, что существует текущий Ограничение SQL Server при включении шифрование на сервере. шифрование будет для всех входящих подключений. Если вы включите шифрование на клиенте компьютер, все исходящие соединения от этого клиента попробуйте, чтобы сделать зашифрованное соединение с любым SQL Сервер.
Позднее редактирование:
Использовать более старую версию клиента MS JDBC: он не может обрабатывать шифрование на стороне сервера...