"Ланцюжок сертифікатів був виданий органом, якому не довіряють" під час підключення БД у ролі VM від веб-сайту Azure


191

У мене виникає помилка під час підключення МОЙ БД, який знаходиться в ролі VM (у мене є роль SQL VM) від веб-сайту Azure. Робота VM та веб-сайту Azure знаходяться у західній зоні. Я стикаюся з наступним питанням:

SqlException (0x80131904): з'єднання було успішно встановлено із сервером, але потім під час входу сталася помилка. (постачальник: постачальник SSL, помилка: 0 - ланцюжок сертифікатів був виданий органом, якому не довіряють.)]

Я можу підключитися до своєї БД за допомогою SSMS. Порт 1433 відкритий на моїй VM ролі. Що не так у моєму зв’язку?

Відповіді:


367

Ви, ймовірно, не має встановленого сертифіката з підписом CA у надійному кореневому сховищі SQL VM.

Якщо у вас є Encrypt=Trueрядок з'єднання, або встановіть його на вимкнено (не рекомендується), або додайте наступне у рядку з'єднання:

TrustServerCertificate=True

SQL Server створить самопідписаний сертифікат, якщо ви не встановите його для його використання, але він не буде довіряти абоненту, оскільки він не підписаний CA, якщо ви не скажете рядок з'єднання, щоб довіряти будь-якому серверу cert від за замовчуванням.

Довгостроково рекомендую використовувати Давайте шифрувати, щоб безкоштовно отримати сертифікат, який підписує CA від відомого довіреного ЦА, і встановити його на VM. Не забудьте встановити його для автоматичного оновлення. Докладніше про цю тему ви можете прочитати в книгах SQL Server онлайн в розділі "Ієрархія шифрування" та "Використання шифрування без перевірки".


1
Вибачте моє погано, TTrusted_Connection = False встановлено у рядку з'єднання. встановлення цього справді працює для мене. Спасибі все одно
ZafarYousafi

1
@ZafarYousafi, ви повинні позначити цю відповідь правильною.
Термато

5
Недоцільно радити налаштування TrustServerCertificate- trueце відключає перевірку сертифікатів. Це не краще, ніж просто налаштувати Encryptна false!
Метт Томас

5
Поради, надані у цій відповіді "TrustServerCertificate = True", можуть усунути проблему, але це жахлива порада. Виправити причину, а не симптоми. Інша частина відповіді, яка передбачає встановлення сертифікованого сертифікату CA, - це шлях.
Мітч Пшеничний

У нових версіях SSMS на вкладці "Властивості підключення" ви знайдете невеликий варіант, який називається "Сертифікат довіреного сервера". Перевірка цього хлопчика має такий же ефект, як і команди, перераховані вище.
gwynbleidd

87

Якщо ви використовуєте SQL Management Studio, перейдіть до властивостей підключення та натисніть "Довірений сервер сертифікований" Якщо ви використовуєте SQL Management Studio, перейдіть до властивостей підключення та натисніть "Довірений сервер сертифікований"


18
Це не погана порада сама по собі. Я б сказав, що ви можете використовувати його, коли вам потрібно підключитися до сервера розробки та виконувати свою роботу, наприклад, кодування. Як розробник програмного забезпечення, я постійно борюся з DevOps, який не встигає швидко виправити речі, і я не можу дозволити собі витрачати дорогоцінний час на строки. Зважування експозиції даних, що вимикає цю опцію, залежить від вашого оточення, якщо це місцеве або віддалене місце, як адміністратори встановили його, обмеження IP, і це можна легко пом'якшити за допомогою інших обхідних шляхів. Ви не можете сказати, що це погана порада, не маючи трохи інформації про вашу інфраструктуру.
OrizG

Ти щойно врятував мені день. Спасибі @ ct.tan
Мілінда Вікрамасінгх

@OrizG У мене встановлений SQL Server на локальній машині, і я використовую його для особистих проектів. На даний момент я не хочу витрачати на це копійки, тому я отримав собі безкоштовний хост і спробував налаштувати сервер таким чином, щоб я підписав сертифікати і обміняв їх між сервером і клієнтами, які я ' Буду використовувати для доступу. Однак через безкоштовний хост мені не вдалося це зробити з Let's Encrypt. Які саме недоліки цього рішення, порівняно з правильним обміном сертифікатів, з сертифікованими сертифікатами, підписаними ЦА?
ccoutinho

31

Якщо ви бачите це повідомлення про помилку при спробі підключення за допомогою SSMS, додайте TrustServerCertificate=Trueдо додаткових параметрів з'єднання.


23
Мітч, ти зробив цей самий коментар на три відповіді на це запитання. Може бути корисним іншим читачам, якщо ви надали якусь змістовну інформацію або посилання на те, чому це "дійсно, дуже погана порада".
Без взуття

@Shoeless Кілька коментарів до прийнятої відповіді пояснюють.
Том Блоджет

4

Якщо ви намагаєтесь отримати доступ до нього за допомогою підключень даних у Visual Studio 2015 та отримуєте вищезгадану помилку, то перейдіть до пункту «Додатково» та встановіть TrustServerCertificate=True помилку.


9
Це не погана порада сама по собі. Я б сказав, що ви можете використовувати його, коли вам потрібно підключитися до сервера розробки та виконувати свою роботу, наприклад, кодування. Як розробник програмного забезпечення, я постійно борюся з DevOps, який не встигає швидко виправити речі, і я не можу дозволити собі витрачати дорогоцінний час на строки. Зважування експозиції даних, що вимикає цю опцію, залежить від вашого оточення, якщо це місцеве або віддалене місце, як адміністратори встановили його, обмеження IP, і це можна легко пом'якшити за допомогою інших обхідних шляхів. Ви не можете сказати, що це погана порада, не маючи трохи інформації про вашу інфраструктуру.
OrizG

1

З тієї ж проблеми потрапив під час доступу до SQLServer з IIS. Додавання TrustServerCertificate = True не допомогло.

Можна побачити коментар у документах MS: Переконайтесь, що обліковий запис служби SQLServer має доступ до сертифіката TLS, який ви використовуєте. (Служба NT \ MSSQLSERVER)

Відкрийте персональний магазин і клацніть правою кнопкою миші сертифікат -> керуйте приватними ключами -> Додати обліковий запис служби SQL і надайте повний контроль.

Перезапустіть службу SQL. Це спрацювало.


0

Те саме можна досягти і від самого клієнта ssms. Просто відкрийте ssms, введіть ім’я сервера, а потім з опцій у розділі властивостей підключення заголовка переконайтесь, що сертифікат довіреного сервера встановлений.


0

Цю проблему я отримав під час імпорту даних Excel у базу даних SQLData через SSMS. Рішення полягає у встановленні TrustServerCertificate = Trueв розділі безпеки


0

Я зіткнувся з цією помилкою, намагаючись запустити профайлер, навіть незважаючи на те, що в моєму з’єднанні було перевірено сертифікат довірчого сервера, і я додав TrustServerCertificate=Trueу розділ «Розширений». Я змінив екземпляр SSMS, що працює як адміністратор, і профайлер почав без проблем. (Раніше я виявив, що коли мої з’єднання навіть із місцевими займали тривалий час, а адміністратор допоміг).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.