修复Centos 8.0 连接sqlserver提示连接错误

坦率地说,在 CentOS 8 .0 上连接 SQL Server 时修复 SSL/TLS 错误有两个关键任务:这意味着暂时将加密策略降级为 LEGACY 或直接升级驱动程序以支持新协议。

首先让我告诉你最重要的事情。
CentOS8 的默认 DEFAULT 策略直接终止 TLS1 .0/1 .1 ,SQL Server 的旧驱动程序或客户端可能依赖于此。
我们去年跑的一个项目中,客户使用的是2 008 R2 SQL Server。
司机已经老得像个猴子屁股了。
使用 openssl 直接测试表明 TLS1 .2 握手也失败。
另一件事是,降级策略后需要使用 sudoupdate-crypto-policies--setLEGACY 命令。
这应用起来很快,但坦率地说,相当棘手。
去年,一位客户就这样做了,并成为内部安全的直接目标。
还有另一个重要的细节。
临时降级后,必须重启服务,尤其是微服务。
如果不重新启动,效果就会被浪费。
这几乎让我们的一个项目陷入了很长一段时间的停滞。

一开始我以为只要调整一下系统策略就可以了,但后来我发现出了问题,我不得不相应地调整SQL Server配置。
例如,如果您使用最新版本的 MicrosoftJDBCDriver,则 mssql-jdbc-1 2 .4 .1 .jre1 1 .jar 等内容将默认支持 TLS1 .2 +。
只需更换现有驱动程序即可。
或者,更无情的是,显式地将 sslProtocol=TLSv1 .2 添加到连接字符串中。
但是,这必须由 SQL Server 管理员完成,他还需要启用 TLS1 .2
等一下,在使用 LEGACY 策略时不要太早沾沾自喜。
仅仅因为您可以通过 openssl 连接到 TLS1 .1 并不意味着不会出现问题。
系统默认禁用的弱密码套件 SSLv3 和 TLS1 .0/1 .1 仍然存在。
这是一个很高的安全风险,POODLE 攻击等旧技术随时可能爆发。
必须特别注意合规性。
如果您的客户属于金融行业并使用 PCIDSS 标准卡,​​他们将需要将其更改回默认值。

我们建议先在测试环境中验证降级效果。
如果驱动版本太旧,直接升级JDBC驱动或SQL Server是更安全的选择。
你怎么认为?

无法通过安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:Sever key

老实说,这应该分阶段进行。
您需要找到更新版本的 Microsoft JDBC 驱动程序。
旧版本无法工作,严重卡住。
我记得去年微软发布了一个新版本,叫做 JDBC 4 .2 现在使用起来更加容易。

关键在sunjce_provider.jar中。
必须将其放置在正确的位置。
以前默认位于jre6 的lib\ext中,但现在不再起作用了。
必须放在JAVA_HOME\jre\lib\ext下。
我当时不知道为什么,后来问朋友,她说是因为规范变了。

记住,路径一定要正确。
如果输入错误,您将无法连接。
我花了很长时间才明白这一点。
这可能真的很令人沮丧,但一旦解决了它,一切都会好起来的。