关于Java访问SQL server的错误:The server selected protocol version TLS10 is not accepted by client preferences [TLS12]及安全套接字层(SSL)加密与 SQL Server 建立安全连接

此笔记记载了本人在使用centos7.6环境下使用java连接sqlserver2008时 The server selected protocol version TLS10 is not accepted by client preferences [TLS12]安全套接字层(SSL)加密与 SQL Server 建立安全连接的症状、排查及解决方案。

系统:centos7.6

JDK:openjdk 1.8

连接库:com.microsoft.sqlserver,mssql-jdbc,6.1.0.jre8

数据库:SQL server 2008

在执行到如下代码时会遇到 The server selected protocol version TLS10 is not accepted by client preferences [TLS12]安全套接字层(SSL)加密与 SQL Server 建立安全连接的错误提示。

public WhiteListResult JudgmentQingJia(String number) throws SQLException {
        DriverManager.registerDriver(new SQLServerDriver());
        Connection connection = null;
        Statement stmt = null;
        try {
            Class.forName(DRIVER);
            connection = DriverManager.getConnection(URL + DATABASE_NAME, USER_NAME, PASSWORD);
            stmt =
                    connection.createStatement(
                            ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            stmt.setQueryTimeout(1);
            ResultSet resultSet =
                    stmt.executeQuery(
                            String.format(
                                    "SELECT  * FROM user",
                                    number));

            boolean find = resultSet.first();

            resultSet.close();

            return new WhiteListResult(true, "success", find);
        } catch (ClassNotFoundException e) {
            System.out.println(e);
            return new WhiteListResult(true, "驱动问题", false);
        } catch (SQLException e) {
            System.out.println(e);
            return new WhiteListResult(true, e.getMessage(), false);
        } finally {
            if (stmt != null && !stmt.isClosed()) {
                stmt.close();
                stmt = null;
            }

            if (connection != null && !connection.isClosed()) {
                connection.close();
                connection = null;
            }
        }
    }

解决方案

造成此问题的主要原因是由于算法的配置问题导致。解决方案是修改算法的配置即可。

进入jdk配置目录
cd /usr/lib/jvm/jre/lib/security

编辑配置文件
nano java.security

找到并修改如下参数
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, \
    EC keySize < 224, 3DES_EDE_CBC

保存并重新启动项目即可

Original: https://www.cnblogs.com/ykbb/p/14975938.html
Author: 一块白板
Title: 关于Java访问SQL server的错误:The server selected protocol version TLS10 is not accepted by client preferences [TLS12]及安全套接字层(SSL)加密与 SQL Server 建立安全连接

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/610426/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • jQuery的操作方式以及动画效果

    jQuery的操作标签 文本操作 $("选择符").html() // 读取指定元素的内容,如果$()函数获取了有多个元素,则提取第一个元素 $("选…

    Linux 2023年6月7日
    0110
  • Linux——防火墙、SELinux规则

    防火墙的功能:简单地释放或阻止某些服务和端口 [En] The function of firewall: simply to release or block certain s…

    Linux 2023年5月27日
    087
  • 如何在 pyqt 中解决启用 DPI 缩放后 QIcon 模糊的问题

    问题描述 如今显示器的分辨率越来越高,如果不启用 DPI 缩放,软件的字体和图标在高分屏下就会显得非常小,看得很累人。从 5.6 版本开始,Qt 便能支持 DPI 缩放功能,Qt6…

    Linux 2023年6月7日
    0201
  • Redis的穿透、击穿、雪崩之间的区别与联系

    [本文出自天外归云的博客园] 缓存穿透 redis查询后有数据库查询的情况,查的数据在数据库里本来就没有,所以缓存里也没有,所以查询穿透了缓存,直接落到了数据库上,这就是缓存穿透 …

    Linux 2023年5月28日
    085
  • 使用ipmitool配置ipmi(远程控制卡)

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    092
  • Windows安装Mysql.zip

    设定环境变量并新建配置文件 在系统环境变量 Path中新建刚刚下载的文件并解压的路径 E:\mysql-8.0.29-winx64\bin. 新建配置文件请参考以下文件, 将文件更…

    Linux 2023年6月7日
    0100
  • python之pyautogui实现图片识别-办公自动化

    环境 python 3.8everedit编辑器 代码 from selenium import webdriver from selenium.webdriver.chrome….

    Linux 2023年6月7日
    0113
  • histogram的类型详解

    采样点 每隔指定的时间会采集并上报一次数据,称为采样点。 请注意这里采集的是当前瞬间的数据 count 对采样点的 次数累计和(count) bucket 对采样点的 次数进行统计…

    Linux 2023年6月13日
    078
  • [ Shell ] 用 while + case 实现 GetOptions 效果

    https://www.cnblogs.com/yeungchie/ 可以用 getopt,但我还是喜欢自己写这个过程,便于我控制更多细节。 下面要实现的效果是,从命令行参数中分析…

    Linux 2023年6月7日
    099
  • jenkins pipeline中获取shell命令的输出

    //获取标准输出//第一种result = sh returnStdout: true ,script: ” Original: https://www.cnblogs…

    Linux 2023年5月28日
    088
  • 用shell抓取某考试试题

    一、背景 最近公司组织考信息安全,但考试机构没有整理出试题,只给了以下几个在线练习的链接,想着用博客整理下题库题型,奈何这个只能用拍照图片,然后用图片转文字的方式太慢,累死个人了,…

    Linux 2023年6月6日
    0101
  • JuiceFS v1.0 正式发布,首个面向生产环境的 LTS 版本

    今天,JuiceFS v1.0 发布了 🎉 经过了 18 个月的持续迭代和大量生产环境的广泛验证,此版本将成为第一个被长期维护的稳定版(LTS)。同时,该版本提供完整的向前兼容,所…

    Linux 2023年6月14日
    095
  • 如何使用CMake构建c++项目

    1. c++项目构建与CMake简介 在Windows系统上我们通常使用 Visual Studio(VS)来生成我们的c++项目。我们只需在VS相应的层次目录中添加相应的文件即可…

    Linux 2023年5月27日
    0209
  • [ Skill ] 文件读写 & IO 句柄

    在 Skill 中使用一种叫做 ioport 类型的变量来操作文件。不过我一般更习惯称为 IO 句柄 (IO/File Handle)。 常用下面两个函数来获得这些 IO 句柄: …

    Linux 2023年6月7日
    094
  • markdown插入代码块导致列表缩进异常的解决方法

    前言 一、问题描述 总结 前言 最近正在用markdown写博客,发现插入代码块后,代码块和代码块后的内容会产生缩进异常,翻了翻网页,发现又是经典的一模一样的文章一大把,尝试了之后…

    Linux 2023年6月7日
    0194
  • 多线程执行同一任务,不共享局部变量

    多线程执行同一任务,不共享局部变量 一、 代码展示 import threading import time 多线程执行同一任务时,局部变量是不共享的 def sum_num():…

    Linux 2023年6月14日
    090
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球