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

yizhihongxing

问题描述:

在 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日

相关文章

  • webpack4+express+mongodb+vue实现增删改查的示例

    下面我将详细讲解“webpack4+express+mongodb+vue实现增删改查的示例”的完整攻略。 搭建前端页面 首先,我们需要搭建前端页面,使用 Vue.js 框架实现。在命令行中执行以下命令: vue init webpack vue-test cd vue-test npm install 然后,安装并添加 vue-route 和 axios …

    database 2023年5月22日
    00
  • MySQL 百万级数据的4种查询优化方式

    当MySQL数据库中数据量达到百万级时,查询数据的速度就会变得比较慢。因此需要采取一定的优化策略来提高查询效率。下面介绍MySQL百万级数据的4种查询优化方式: 1. 添加索引 当一张表的数据量比较大时,使用索引来优化查询效率是比较好的办法。这样可以让查询更快速,减少扫描行的数量。可以使用如下语句来添加索引: ALTER TABLE table_name A…

    database 2023年5月19日
    00
  • MySQL数据库查询之多表查询总结

    MySQL数据库查询之多表查询总结 在实际业务中,数据库往往并不仅仅只有一张表。为了更好地提高查询效率和查询结果的准确性,我们就需要用到多表查询了。 内连接(INNER JOIN) 内连接返回同时在两个表中存在的所有行,并且在连接的列上具有相同的值。它是最常用的一种多表查询方式,下面用一个示例来说明。 有两张表,分别是学生表(students)和成绩表(sc…

    database 2023年5月21日
    00
  • Hadoop和MariaDB的区别

    Hadoop和MariaDB是两个非常常见的数据处理技术,它们虽然都是用于处理数据,但是有很大的不同之处。 Hadoop Hadoop是Apache基金会开源的分布式计算框架,主要用于数据存储和处理,其核心组成部分包括HDFS(分布式文件系统)和MapReduce(分布式计算框架)。 Hadoop的优势在于处理海量数据,其核心理念是将数据划分成多个数据块并在…

    database 2023年3月27日
    00
  • C#实现定义一套中间SQL可以跨库执行的SQL语句(案例详解)

    首先需要明确一下题目中的术语: 中间SQL:指的是可以跨库执行的SQL语句。 跨库执行:指的是在不同的数据库中执行SQL语句。 为了实现中间SQL可以跨库执行的功能,可以采用以下步骤: 定义好中间SQL语句的格式。一般来说,可以将中间SQL语句格式化为字符串,其中包含几个占位符,如“{数据库名}”、“{表名}”等。 通过C#代码动态生成SQL语句。在生成SQ…

    database 2023年5月21日
    00
  • Redis密码设置

    redis没有实现访问控制这个功能,但是它提供了一个轻量级的认证方式,可以编辑redis.conf配置来启用认证。    1、初始化Redis密码:    在配置文件中有个参数: requirepass  这个就是配置redis访问密码的参数;    比如 requirepass test123;    (Ps:需重启Redis才能生效)    redis的…

    Redis 2023年4月13日
    00
  • SQL修改语法语句梳理总结

    下面是针对“SQL修改语法语句梳理总结”的完整攻略: 1. SQL修改语法概述 SQL修改语句允许你向数据库中的表格添加、更新或删除数据行。其中,修改的数据行可以是一行,也可以是多行。SQL修改语法通常由以下三个部分组成: UPDATE table_name SET column1 = value1, column2 = value2, …. WHERE…

    database 2023年5月21日
    00
  • HTML5 Web Database 数据库的SQL语句的使用方法

    下面是详细讲解“HTML5 Web Database 数据库的SQL语句的使用方法”的完整攻略: 1. HTML5 Web Database简介 HTML5 Web Database是浏览器本地存储数据的一种方式,它能够在浏览器中创建一个SQL数据库,数据以表格的形式存储,并支持SQL语句进行增、删、改、查等操作。HTML5 Web Database使用方便…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部