编译时遇到通过SSL与SQL Server建立安全连接问题的处理过程。

522 阅读1分钟

原项目在Windows下开发,编译正常。当换到类Centos系列的linux系统下开发时,遇到了编译问题:

驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server建立安全连接。错误:“Cretificates do not conform to algorithm constraints”

同样的连接配置,在DBeaver下可以正常连接,没有SSL配置,驱动配置中trustServerCertificate=true;encrypt=false

起初以为是maven依赖可能升级过,导致在编译时,连接数据库使用了加密方式导致的。

用-X参数打开详细内容查看。最后跟踪到GitHub上的源码。但是并未发现有不对的地方。

后来,通过搜索,将问题定位到了jdk环境问题。 最后查阅了上百篇解决方案,反复测试。

参考针对jdk8的java.security配置 对ssl 加密算法要求的问题。修改了jdk.tls.disableAlgorithms,jdk.tls.legacyAlgorithms没有效果。 甚至,直接配置到Intelij里的jvm option中,也没有效果。

最后通过 博客园的一篇文章 中的参考链接,终于找到了解决方案。 来自StackOverflow中的一个0点赞的解决方案 security.useSystemPropertiesFile = false解决。

看来还是系统环境问题。