Якщо ви використовуєте незахищені/незахищені мережі для підключення клієнтів/програм до бази даних на Microsoft SQL Server, доцільно використовувати шифрування трафіку. У цій статті ми покажемо, як налаштувати та включити обов'язковий трафік SSL/TLS, щоб підключити клієнтів до Microsoft SQL Server.
Починаючи з MS SQL 2016 замість SSL, TLS використовується.Щоб увімкнути шифрування для підключення до MS SQL Server, вам потрібно встановити сертифікат TLS/SSL на сервері. Це може бути комерційний сертифікат, сертифікат, виданий вашим СА, або сертифікат, визначений самостійно. Сертифікат TLS повинен задовольнити такі умови:
- Покращене використання ключів -
Автентифікація сервера 1.3.6.1.п’ять.п’ять.7.3.1
; - Дійсний сертифікат;
- Сертифікат повинен бути в сховищі Сертифікатів (
Certmgr.MSC
) або комп'ютер (Certlm.MSC
); - Сертифікат імені теми повинен вказати ім'я сервера, де запускається MSSQL;
- Клієнти повинні довіряти сертифікату.
Ви можете створити самооцінений сертифікат за допомогою PowerShell (сертифікати самовизначення рекомендуються лише в тестових носіях):
New selfsignedcerticate-dnsname srv-rds1.Ресурс.Com -certStoreLocation cert: \ localmachine \ мій
Якщо ви звернетесь до екземпляра MSSQL не лише за назвою хоста, але і за іншими іменами (наприклад, на сервері є слухач групи, що завжди є доолі з базою даних цього брокера RDS), вам потрібно Додайте всі можливі імена до теми альтернативної назви. Випустити самооцінений сертифікат з кількома SAN протягом трьох років:
$ Todaydate = get-date
$ Add3year = $ сьогодні.Addyears (3)
$ NewCert = NewsersignedCertificate -dnsname Srv-RDS1, SRV-RDS1.Winitpro.LOC, SQL-RDSDB-LISTE.Winitpro.Loc -SertStoreLocation cert: \ localmachine \ my -onotter $ add3year
Імпортуйте сертифікат у надійному:
$ Certfile = експорт -certificate -sert $ newcert -filepath c: \ certname.Цер
Імпорт -certificate -SertSertElocation cert: \ localmachine \ authroot -filepath $ certfile.Повне ім'я
Тепер вам потрібно прив’язати свій сертифікат до встановленого SQL Server:
- ВІДЧИНЕНО SQL Server Configuration Manager, Йти до Конфігурація мережі SQL Server, Відкриті властивості Протоколи MSSQLServer;
- Увімкніть опцію Силове шифрування;
- Перейдіть на вкладку Сертифікат І у списку падіння вибирайте сертифікат, який ви імпортуєте в магазин або комп'ютерні сертифікати;
- Перезапустити MS SQL для застосування змін.
Щоб завжди використовувати зашифроване з'єднання з сервером MSSQL, вам потрібно:
- Запустіть у менеджері конфігурації клієнта -> Нативна конфігурація SQL -> Властивості -> включити Шифрування протоколу сили;
- Ви також можете використовувати рядок з'єднання, який змушує клієнта використовувати SSL/TLS для підключення до сервера MSSQL:
Джерело даних = sqldb1.Winitpro.ru; інтегрована безпека = fals
Не вдається підключитися до SRV-SQL. Підключення було успішно встановлене з сервером, але анеррор, що виникає під час процесу входу. (Постачальник: постачальник SSL, помилка: 0 - Ланцюг сертифікатів був виданий повноваженням, якому не довіряють.) (Microsoft SQL Server, Помилка: -2146893019)
Ви можете додати сертифікат до домену, довіреного комп’ютерам, використовуючи GPO.
Так що SSM завжди використовують шифрування для підключення до бази даних SQL Server, відкрийте вікно з'єднання (підключіться до сервера) -> Параметри -> Увімкніть параметр Зв'язок шифрування.
Коли з’являється помилка "Цільове головне ім'я неправильне ", Перевірте, що ви використовуєте для підключення імені SQL Server, зазначеного в імені теми або сертифіката SAN.
Ви можете підключитися до SQL Server за допомогою модуля SQLServer PowerShell і перевірити, чи підтримується ваш SQL Server
Заклик -Sqlcmd -Sertance "srv -rds1" -query "selectinct encrypt_option від sys.dm_exec_connections what session_id = @hpid "
-ServerInstance "SRV-RDS1,21221"
У нашому прикладі SQL Server підтримує зашифровані з'єднання ( Encrypt_option = true
).
Бази даних Azure SQL підтримують лише безпечні з'єднання. Навіть якщо параметр підключення шифрування не знаходиться в CSMS, з'єднання з Azure SQL все одно буде зашифровано (див. Стаття безпеки бази даних в Azure SQL).