gpt4 book ai didi

java - 无法从 CentOS 8 服务器使用 MS JDBC 驱动程序连接到 SQL Server 服务器 : SSL error but not using secure connection

转载 作者:行者123 更新时间:2023-12-03 09:52:30 28 4
gpt4 key购买 nike

我发现一篇与我遇到的问题很接近的文章。就是这个:
SQL Server JDBC Error on Java 8: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption
我可以提供整个堆栈跟踪,但修剪后的版本有这一系列错误:

com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "java.security.cert.CertificateException: Certificates do not conform to algorithm constraints". ClientConnectionId:e7a5ebc2-d489-4743-85ba-7873926508fe

Caused by: javax.net.ssl.SSLHandshakeException:
java.security.cert.CertificateException: Certificates do not conform to algorithm constraints

Caused by: java.security.cert.CertificateException: Certificates do not conform to algorithm constraints

Caused by: java.security.cert.CertPathValidatorException: Algorithm constraints check failed on keysize limits. RSA 1024bit key used with certificate: CN=SSL_Self_Signed_Fallback. Usage was tls server


JDBC 连接到没有启用连接加密或我知道的任何安全性的 SQL Server 2012。我和我们的数据库人员谈过,他说他知道的连接没有安全性。所以,我不确定为什么 MS 驱动程序继续提示 SSL 连接。
这个 Linux 服务器 (CentOS 8) 有两个使用 JDBC 连接的 tomcat 安装。我有一个 Tomcat 8.0.32 实例,它使用 JTDS 驱动程序连接到 SQL Server 2012 实例,该驱动程序在连接上完全没有问题。我尝试将该驱动程序切换到 MS 驱动程序,然后它遇到了同样的错误。所以我把它换回来了。但是Tomcat(9.0.33)的第二次安装有一个需要JDBC 4.0或以上驱动程序的应用程序,而JTDS驱动程序只有3.0驱动程序,所以我必须使用MS驱动程序。但是,我无法弄清楚如何获得成功的连接。
通过互联网挖掘,我发现了对 jsse.jar 的引用并安装了正确的证书(尽管没有具体说明如何执行或为什么这样做)。我还挖了一篇文章,说 JTDS 驱动程序使用 NTLM 进行连接(不是 100% 确定这一点,因为我在 JTDS 的连接中没有引用域)。无论如何,我只需要一些关于如何配置 MS 驱动程序以从 Linux 连接到非安全 SQL Server 2012 的指导。我发现的 Microsoft 引用文献解决了安全连接,但没有关于不安全的连接。
运行Java版本:
  • openjdk 版本“1.8.0_252”
  • OpenJDK 运行时环境(内部版本 1.8.0_252-b09)
  • OpenJDK 64 位服务器 VM(内部版本 25.252-b09,混合模式)
    driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
    url=jdbc:sqlserver://192.168.80.214:1433;databaseName=DB_Central;
    集成安全=真;身份验证方案=NTLM;域=mydomain.org;

  • 也试过:
    url=jdbc:sqlserver://192.168.80.214:1433;databaseName=DB_Central;encrypt=false;sslProtocol=TLSv1.2;
    只是:
    url=jdbc:sqlserver://192.168.80.214:1433;databaseName=DB_Central
    有效的 JTDS(在 tomcat 8.0.32/JDBC 3.0 环境中):
    driverClassName=net.sourceforge.jtds.jdbc.Driver
    url=jdbc:jtds:sqlserver://192.168.80.214:1433;databaseName=DB_Central
    任何可能为我指明正确方向的事情都会有所帮助,尤其是为什么 MS 驱动程序想要(或认为)连接是安全的。另一个花絮是我在部署到 Windows 10 时没有看到这些错误......所以它与 Linux 以及 Linux 上的 Java 配置有关。或者,也许我在 Linux 中只需要正确的连接字符串咒语.....

    最佳答案

    驱动程序认为连接是安全的,如果它连接到仅用于接收安全连接的端口。
    1.检查端口
    2.检查 JDBC url 上 TLS/SSL 的任何其他显式设置

    关于java - 无法从 CentOS 8 服务器使用 MS JDBC 驱动程序连接到 SQL Server 服务器 : SSL error but not using secure connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62582542/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com