Java8(291)之后禁用了TLS1.1使JDBC无法用SSL连接SqlServer2008的解决方法

问题描述:

在 Java8(291) 之后,默认禁用了 TLS1.1,这会导致使用 JDBC 连接 SQL Server 2008 时无法使用 SSL 进行连接。那么如何解决这个问题呢?

解决方法:

  1. 升级 SQL Server 版本

首先,可以考虑升级 SQL Server 到支持更高安全协议的版本。例如,SQL Server 2012 及以上版本默认支持 TLS1.2,因此可以尝试升级到 SQL Server 2012 或以上版本。如果实在无法升级,可以考虑采取下面的解决方法。

  1. 配置 JVM

可以通过配置 JVM 来允许 TLS1.1 协议。具体来说,需要在启动 JVM 时加上如下参数:

-Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2"

这个参数会启用 TLS1.1 和 TLS1.2 协议,并禁用 TLS1.0 协议。可以根据实际需求修改参数值。

另外,如果使用的是 OpenJDK,还需要添加以下参数:

-Djava.security.properties=${PATH_TO_OPENJDK}/conf/security/java.security

其中 ${PATH_TO_OPENJDK} 表示 OpenJDK 安装路径。

示例说明:

示例 1:Java 连接 SQL Server 2008 配置TLS1.1

假设我们的 Java 连接 SQL Server 2008 的代码如下:

Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=TestDB;", "user", "password");

如果我们按照上面的第二种方法来解决问题,可以在启动 JVM 时加上如下参数:

java -Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2" MainClass

其中 MainClass 表示 Java 主类名称。

示例 2:使用 Tomcat 连接 SQL Server 2008 配置TLS1.1

如果我们使用 Tomcat 来连接 SQL Server 2008,可以在 catalina.shcatalina.bat(根据操作系统不同)中添加如下参数:

JAVA_OPTS="$JAVA_OPTS -Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2"

这样在启动 Tomcat 时就会加上上述参数来设置 TLS 协议。

总结:

通过上述两种方法,我们可以解决 JDBC 无法使用 SSL 连接 SQL Server 2008 的问题。但是需要注意的是,如果使用的是 OpenJDK,还需要添加更多的配置参数。同时需要考虑升级 SQL Server 版本来提高安全性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java8(291)之后禁用了TLS1.1使JDBC无法用SSL连接SqlServer2008的解决方法 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • 清除SQL SERVER错误日志出现操作系统错误的解决方法

    清除SQL Server错误日志是维护数据库的常见任务之一。然而,在执行此任务时,有时会遇到操作系统错误,导致无法清除日志。本文将详细介绍这种情况下的解决方法,包括两个示例。 问题描述 在尝试清除SQL Server错误日志时,可能会遇到以下错误: Msg 17053, Level 16, State 1, Line 1 ERRORLOG cannot be…

    database 2023年5月21日
    00
  • Oracle 删除大量表记录操作分析总结

    Oracle 删除大量表记录操作分析总结 删除大量表记录可能会给数据库性能带来负面影响,因为它会影响表的索引状态,甚至可能引起日志文件和回滚段的使用增加,还会导致锁等待和I/O的写入等问题。本文将介绍如何进行删除大量表记录的操作分析总结及优化。 1. 分析表大小和索引情况 可以通过以下SQL语句来分析表的大小和索引情况: SELECT segment_nam…

    database 2023年5月22日
    00
  • 使用SQL语句实现查询排序,顺序和倒序

    使用SQL语句实现查询排序是非常常见的操作,可以让我们以特定的属性进行排序,以便更好地理解数据。下面是细致的攻略: 1. 确定排序属性和排序顺序 在使用SQL语句进行排序时,需要先选择排序的属性和排序顺序。可以按升序或降序排列。对于文本数据类型,升序将按照A-Z的字母顺序进行排序,而降序将按照Z-A的字母顺序进行排序。对于数字数据类型,升序将按照从小到大的顺…

    database 2023年5月21日
    00
  • Statement 和 CallableStatement 的区别

    下面是 Statement 和 CallableStatement 的区别的完整攻略: 1. Statement 和 CallableStatement 是什么? Statement 是 JDBC 中用于执行 SQL 语句的接口,它是所有 SQL 语句执行器的公共父接口。它的主要作用是用于向数据库发送静态 SQL 语句并返回执行结果。 CallableSta…

    database 2023年3月27日
    00
  • Android使用SQLite数据库的示例

    Android是一个开放源码的操作系统,在移动设备上的应用非常广泛。而在Android应用开发中,SQLite是一种非常常用的轻量级嵌入式关系型数据库,它非常适合存储在设备上的数据(如音乐、视频、联系人等)。下面,本文将为大家介绍Android使用SQLite数据库的示例。 创建SQLite数据库 在Android开发中创建SQLite数据库,需要完成以下步…

    database 2023年5月21日
    00
  • 详解Redis命令行模式5种使用方法

    Redis是一个使用内存作为数据存储的开源高性能键值对数据库,它支持多种数据结构,包括字符串,哈希表,集合,有序集合等。通过Redis命令行模式,用户可以方便地使用命令与Redis交互,存储和检索数据。 下面我们将详细讲解Redis命令行模式的完整使用方法,并提供相关代码示例。 Redis安装与启动 首先,我们需要先安装Redis。在Ubuntu系统中,可以…

    Redis 2023年3月18日
    00
  • Redis 向集群添加新节点

      1. 启动集群服务(向集群添加新节点,则说明,集群是已知的)。   2. 搭建将要添加到集群的节点     (1)以集群的方式对新添加的节点进行配置:redis.conf.     (2)启动节点实例服务.    3.集群管理 可参考  Redis cluster tutorial 官网指导文档,往往是最新的。 一、启动集群服务:【命令在集群服务器执行】…

    Redis 2023年4月11日
    00
  • spring boot 整合redis之后报错

    spring boot2 整合redis,使用下述依赖 implementation ‘org.springframework.boot:spring-boot-starter-data-redis’ 但是在项目启动的时候,就会报错, Caused by: java.lang.ClassNotFoundException: org.apache.common…

    Redis 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部