如何使用Windows身份验证和强制加密设置为true连接到MSSQL Server

Vai*_*ain 5 java sql sql-server jdbc

我通过Java程序连接到Sql Server 2008和2008+

  • Java 8
  • Sql jdbc microsoft驱动4.1
  • 连接字符串: DriverManager.getConnection("jdbc:sqlserver://<Ip>;instance=MSSQLSERVER;domain=<domain>;IntegratedSecurity=true;ssl=request;", "administrator", "password");

我能够成功连接.但是当我通过sql server配置管理器在sql server中启用Force加密为true时.

在此输入图像描述 我开始收到以下错误.

com.microsoft.sqlserver.jdbc.SQLServerException: An existing connection was forcibly closed by the remote host ClientConnectionId:xxxx
Run Code Online (Sandbox Code Playgroud)

仅供参考:我已经尝试在连接字符串中添加以下参数.

  • SSL =请求
  • SSL =需要
  • 加密=真
  • trustServerCertificate =真
  • 此外,我已尝试将驱动程序升级到4.2和mssql驱动程序7.0
  • 尝试了jtds驱动程序
  • 需要注意的是:我能够通过ssms连接到实例

编辑1

- 另一个重点 - 它只发生在Windows身份验证中(通过IntegratedSecurity = true;在连接字符串中启用).所以这种情况只有在Force加密设置为true并且我们尝试以Windows身份验证模式连接时才会发生.

Vai*_*ain 3

@Vivien @MarkRotteveel 感谢您的回答,给了我方向。

事实证明,版本低于11.0的sql server遇到了麻烦,作为sql server 11.0版本的一部分,进行了各种改进,纠正了windows身份验证+加密连接连接的错误。

在此输入图像描述

因此,Sql Server 2012 及更高版本将支持使用 TLSv1.2 的 Windows 身份验证、Windows 身份验证以及无缝的加密连接。现在我正在使用

  • 爪哇8
  • SQL服务器驱动程序4.2
  • Windows 10
  • 连接字符串中没有额外的参数。

仅供参考:在微软网站上找到。 在此输入图像描述