Как подключиться к серверу MSSQL с аутентификацией Windows и принудительным шифрованием, установленным в true - PullRequest
0 голосов
/ 10 ноября 2018

Я подключался к Sql Server 2008 & 2008+ через программу Java с

  • Java 8
  • Sql jdbc microsoft driver 4.1
  • Строка подключения: DriverManager.getConnection("jdbc:sqlserver://<Ip>;instance=MSSQLSERVER;domain=<domain>;IntegratedSecurity=true;ssl=request;", "administrator", "password");

Мне удалось успешно подключиться. Однако, когда я включил принудительное шифрование на true на сервере SQL через диспетчер конфигурации сервера SQL.

enter image description here Я начал получать следующую ошибку.

com.microsoft.sqlserver.jdbc.SQLServerException: An existing connection was forcibly closed by the remote host ClientConnectionId:xxxx

FYI: Я уже пытался добавить ниже параметры в строке подключения.

  • = SSL запрос
  • = SSL требуется
  • шифровать = истина
  • trustServerCertificate = истина
  • Также я попытался обновить драйвер до версии 4.2 & mssql driver 7.0
  • Пробовал также драйвер jtds
  • Обратите внимание: я могу подключиться к экземпляру через ssms

РЕДАКТИРОВАТЬ 1

- Еще один важный момент - это происходит только для проверки подлинности Windows (включено через IntegratedSecurity = true; в строке подключения). Таким образом, этот случай происходит, только если для параметра Force encryption установлено значение true, и мы пытаемся подключиться в режиме проверки подлинности Windows.

Ответы [ 3 ]

0 голосов
/ 22 ноября 2018

Я думаю, что Марк Роттвил имеет право.

Вам необходимо проверить версию Java и SQL Server 2008.
TLS 1.2 был включен по умолчанию в Java 8 начиная с версии u122 и появляется в SQL Server 2008 только в пакете обновления 4 (версия 10.0.6547.0, select @@VERSION; для проверки) Если вы не удовлетворяете требованию, вы должны выбрать между обновлением сервера или понижением версии вашего jdk. Возможно, это вариант в JDK для получения информации о поведении до обновления 122, но если это так, я этого не знаю.

И, для информации, драйвер mssql-jdbc прекратил поддержку SQL Server 2008 после версии 6.2.

0 голосов
/ 11 декабря 2018

@ Vivien @MarkRotteveel Спасибо за ваши ответы, которые дали мне указания.

Оказалось, что у сервера sql версии ниже 11.0 возникли проблемы, и были сделаны различные улучшения как часть версии сервера SQL Server 11.0, которая исправляла ошибки аутентификации Windows + подключения к зашифрованным соединениям.

enter image description here

Таким образом, Sql server 2012 и выше будет поддерживать Windows-аутентификацию с TLSv1.2, Windows-аутентификацию вместе с зашифрованными соединениями. Сейчас я использую

  • Java 8
  • Sql сервер драйвер 4.2
  • Windows 10
  • Нет дополнительных параметров в строке подключения.

Только для справки: Найдено на сайте Microsoft. enter image description here

0 голосов
/ 11 ноября 2018

Из вашего первоначального вопроса не ясно, сделали ли вы это, но если нет, попробуйте установить оба одновременно: encrypt=true;trustServerCertificate=true

Кроме того, что говорят журналы SQL Server?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...