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日

相关文章

  • 详解Mysql基础语法的使用

    详解Mysql基础语法的使用 MySQL是世界流行的关系型数据库管理系统,具有丰富的功能和易于使用的特点。在本文中,我们将深入探讨MySQL基础语法的使用,包括如何创建和删除数据库,以及如何创建、修改和删除表格等。 创建和删除数据库 使用MySQL创建数据库非常简单,只需要使用CREATE DATABASE命令: CREATE DATABASE mydata…

    database 2023年5月22日
    00
  • SQL通用存储过程分页,支持多表联合

    SQL通用存储过程分页是指能够在多表联合查询时,进行通用的分页查询操作。这种分页操作可以应用于多种数据库类型,如MySQL、Oracle、SQL Server等。下面将详细讲解如何进行SQL通用存储过程分页。 1.创建存储过程 创建一个名为Paging的存储过程。在存储过程中,使用了一些重要的参数,如表名、排序列、第几页、每页行数。下面是实现代码。 CREA…

    database 2023年5月22日
    00
  • Spring Boot无缝集成MongoDB

    一、什么是Spring Boot和MongoDB? Spring Boot是一个基于Spring框架的快速开发极简化的框架,可以快速开发应用程序。 MongoDB是一个新型的文档型数据库,名字起源于humongous(巨大的)。MongoDB具有高性能、易于扩展、开源等特点,在大数据和云计算领域得到了广泛应用。 二、Spring Boot集成MongoDB的…

    database 2023年5月22日
    00
  • ssh(ssh-keygen)配置免输入密码登录远程主机的方法

    为了配置免输入密码登录远程主机,需要执行以下几个步骤: 在本地机器上生成ssh key 在本地机器上执行以下命令: ssh-keygen -t rsa ssh-keygen是一个用于生成ssh key的命令。上述命令将生成一个默认名称为id_rsa的私钥(~/.ssh/id_rsa)和一个相应的公钥(~/.ssh/id_rsa.pub)。在生成ssh key…

    database 2023年5月22日
    00
  • MySQL 的CASE WHEN 语句使用说明

    在这里我将详细讲解“MySQL的CASE WHEN语句使用说明”: CASE WHEN语句概述 CASE WHEN语句是用来进行条件判断的函数,在MySQL中被广泛应用,在需要对查询结果进行处理或者对查询条件进行复杂的定制时,尤其使用频繁。 CASE WHEN语句格式 CASE WHEN语句格式如下: CASE expression WHEN conditi…

    database 2023年5月21日
    00
  • MySQL中存储过程的详细详解

    MySQL中存储过程是事先定义好的SQL语句集合,可以像执行函数一样,通过调用存储过程来完成一系列操作。下面我们详细讲解MySQL中存储过程的使用。 创建存储过程 创建存储过程需要使用CREATE PROCEDURE语句,格式如下: CREATE PROCEDURE 存储过程的名字 [参数列表] BEGIN 存储过程的语句 END; 其中,参数列表为可选项,…

    database 2023年5月18日
    00
  • SQL sever数据库的三个主要语句及技巧的详细讲解

    下面我将详细讲解SQL Server数据库的三个主要语句及技巧的详细讲解。 1. SELECT查询语句 SELECT是SQL Server数据库中最常使用的查询语句,用于从数据库中检索数据。其基本语法为: SELECT column1, column2, … FROM table_name; 其中,column1、column2等为你想要从数据库中检索的…

    database 2023年5月21日
    00
  • 如何在SQL Server中实现 Limit m,n 的功能

    在SQL Server中实现类似于MySQL中的 LIMIT m,n 的限制结果集的功能,可以采用 OFFSET FETCH 的方法。 使用 OFFSET FETCH 实现 Limit m,n 语法格式如下: SELECT column FROM table ORDER BY column OFFSET m ROWS FETCH NEXT n ROWS ON…

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