MsSqlServerJavaJdbcUrl encrypt了解加密支持 230523
lipiwang 2024-11-21 17:43 5 浏览 0 评论
了解加密支持
- 文章评审日期: 2023/05/23
本文内容
- 备注
- 验证服务器 TLS 证书
- 另请参阅
??下载 JDBC 驱动程序
当连接到 SQL Server 时,如果应用程序请求加密并且 SQL Server 的实例已配置为支持 TLS 加密,则 Microsoft JDBC Driver for SQL Server 将启动 TLS 握手。 握手允许服务器和客户端协商将用于保护数据的加密方式和加密算法。 在完成 TLS 握手之后,客户端和服务器可以安全地发送已加密的数据。 在 TLS 握手期间,服务器向客户端发送其公钥证书。 公钥证书的颁发者称为证书颁发机构 (CA)。 客户端负责验证证书颁发机构是否为客户端信任的证书颁发机构。
如果应用程序未请求加密,则 Microsoft JDBC Driver for SQL Server 将不强制 SQL Server 支持 TLS 加密。 如果 SQL Server 实例未配置为强制 TLS 加密,将建立连接而不进行加密。 如果 SQL Server 实例已配置为强制 TLS 加密,则当驱动程序在经正确配置的 Java 虚拟机 (JVM) 上运行时,它将自动启用 TLS 加密,否则连接将终止并且驱动程序将报错。
备注
确保传递给 serverName 的值与服务器证书的公用名 (CN) 或使用者替代名称 (SAN) 中的 DNS 名称完全匹配,以便成功建立 TLS 连接。
有关如何为 SQL Server 配置 TLS 的详细信息,请参阅启用数据库引擎的加密连接。
备注
为了允许应用程序使用 TLS 加密,从 1.2 版开始,Microsoft JDBC Driver for SQL Server 引入了以下连接属性:encrypt、trustServerCertificate、trustStore、trustStorePassword 和 hostNameInCertificate 。 为了使驱动程序能够将 TDS 8.0 与 TLS 加密配合使用,从版本 11.2 开始引入了连接属性 serverCertificate。 有关详细信息,请参阅设置连接属性。
下表总结了此 Microsoft JDBC Driver for SQL Server 版本对于可能的 TLS 连接方案的行为方式。 每种方案使用一组不同的 TLS 连接属性。 该表包含:
- blank:“连接字符串中不存在此属性”
- value:“连接字符串中存在此属性且属性的值有效”
- any:“连接字符串中是否存在此属性或属性的值是否有效均无关紧要”
备注
同样的行为适用于 SQL Server 用户身份验证和 Windows 集成身份验证。
属性设置 | 行为 |
encrypt = false 或 blank | 驱动程序不会强制服务器支持 TLS 加密。 如果服务器具有自签名证书,驱动程序将启动 TLS 证书交换。 将不会验证 TLS 证书,并且只会加密登录数据包中的凭据。 |
encrypt = true | 驱动程序请求对服务器使用 TLS 加密。 |
encrypt = true | 驱动程序请求对服务器使用 TLS 加密。 |
encrypt = true | 驱动程序请求对服务器使用 TLS 加密。 |
encrypt = true | 驱动程序请求对服务器使用 TLS 加密。 |
encrypt = true | 驱动程序请求对服务器使用 TLS 加密。 |
encrypt = true | 驱动程序请求对服务器使用 TLS 加密。 |
encrypt = true | 驱动程序请求对服务器使用 TLS 加密。 |
encrypt = true | 驱动程序请求对服务器使用 TLS 加密。 |
encrypt = true | 驱动程序请求对服务器使用 TLS 加密。 |
encrypt = strict | 驱动程序请求对服务器使用 TDS 8.0 strict TLS 加密。 |
如果 encrypt 属性设置为 true,则 Microsoft JDBC Driver for SQL Server 将使用 JVM 的默认 JSSE 安全提供程序与 SQL Server 协商 TLS 加密 。 默认的安全提供程序可能不支持成功协商 TLS 加密所需的全部功能。 例如,默认的安全提供程序可能不支持在 SQL Server TLS 证书中使用的 RSA 公钥的大小。 在这种情况下,默认的安全提供程序可能报错,此错误将导致 JDBC 驱动程序终止连接。 为了解决此问题,可以使用以下选项之一:
- 使用具有较小 RSA 公钥的服务器证书配置 SQL Server
- 在“<java-home>/lib/security/java.security”安全属性文件中将 JVM 配置为使用其他 JSSE 安全提供程序
- 使用其他 JVM
验证服务器 TLS 证书
在 TLS 握手期间,服务器向客户端发送其公钥证书。 JDBC 驱动程序或客户端必须验证服务器证书是由客户端信任的证书颁发机构颁发的。 驱动程序要求服务器证书必须满足以下条件:
- 证书是由受信任的证书颁发机构颁发的。
- 必须颁发证书才能进行服务器身份验证。
- 证书未过期。
- 证书使用者中的公用名 (CN) 或使用者替代名称 (SAN) 中的 DNS 名称与连接字符串中指定的 serverName 值完全匹配,或与 hostNameInCertificate 属性值(如果指定)完全匹配。
- DNS 名称可包含通配符。 在版本 7.2 之前,Microsoft JDBC Driver for SQL Server 不支持通配符匹配。 也就是说,abc.com 与 *.com 不匹配,但 *.com 与 *.com 匹配。 在版本 7.2 和更高版本中,支持标准证书通配符匹配。
为了使 TDS 8.0 能够与 strict 加密配合使用,serverCertifcate 属性值提供用于服务器证书验证的服务器证书路径。 此文件必须使用 PEM 文件格式。 从服务器收到的证书必须与此证书完全匹配。
另请参阅
使用加密
保护 JDBC 驱动程序应用程序
相关推荐
- linux实例之设置时区的方式有哪些
-
linux系统下的时间管理是一个复杂但精细的功能,而时区又是时间管理非常重要的一个辅助功能。时区解决了本地时间和UTC时间的差异,从而确保了linux系统下时间戳和时间的准确性和一致性。比如文件的时间...
- Linux set命令用法(linux cp命令的用法)
-
Linux中的set命令用于设置或显示系统环境变量。1.设置环境变量:-setVAR=value:设置环境变量VAR的值为value。-exportVAR:将已设置的环境变量VAR导出,使其...
- python环境怎么搭建?小白看完就会!简简单单
-
很多小伙伴安装了python不会搭建环境,看完这个你就会了Python可应用于多平台包括Linux和MacOSX。你可以通过终端窗口输入"python"命令来查看本地是否...
- Linux环境下如何设置多个交叉编译工具链?
-
常见的Linux操作系统都可以通过包管理器安装交叉编译工具链,比如Ubuntu环境下使用如下命令安装gcc交叉编译器:sudoapt-getinstallgcc-arm-linux-gnueab...
- JMeter环境变量配置技巧与注意事项
-
通过给JMeter配置环境变量,可以快捷的打开JMeter:打开终端。执行jmeter。配置环境变量的方法如下。Mac和Linux系统在~/.bashrc中加如下内容:export...
- C/C++|头文件、源文件分开写的源起及作用
-
1C/C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称...
- linux中内部变量,环境变量,用户变量的区别
-
unixshell的变量分类在Shell中有三种变量:内部变量,环境变量,用户变量。内部变量:系统提供,不用定义,不能修改环境变量:系统提供,不用定义,可以修改,可以利用export将用户变量转为环...
- 在Linux中输入一行命令后究竟发生了什么?
-
Linux,这个开源的操作系统巨人,以其强大的命令行界面而闻名。无论你是初学者还是经验丰富的系统管理员,理解在Linux终端输入一条命令并按下回车后发生的事情,都是掌握Linux核心的关键。从表面上看...
- Nodejs安装、配置与快速入门(node. js安装)
-
Nodejs是现代JavaScript语言产生革命性变化的一个主要框架,它使得JavaScript从一门浏览器语言成为可以在服务器端运行、开发各种各样应用的通用语言。在不同的平台下,Nodejs的安装...
- Ollama使用指南【超全版】(olaplex使用方法图解)
-
一、Ollama快速入门Ollama是一个用于在本地运行大型语言模型的工具,下面将介绍如何在不同操作系统上安装和使用Ollama。官网:https://ollama.comGithub:http...
- linux移植(linux移植lvgl)
-
1uboot移植l移植linux之前需要先移植一个bootlader代码,主要用于启动linux内核,lLinux系统包括u-boot、内核、根文件系统(rootfs)l引导程序的主要作用将...
- Linux日常小技巧参数优化(linux参数调优)
-
Linux系统参数优化可以让系统更加稳定、高效、安全,提高系统的性能和使用体验。下面列出一些常见的Linux系统参数优化示例,包括修改默认配置、网络等多方面。1.修改默认配置1.1修改默认编辑器默...
- Linux系统编程—条件变量(linux 条件变量开销)
-
条件变量是用来等待线程而不是上锁的,条件变量通常和互斥锁一起使用。条件变量之所以要和互斥锁一起使用,主要是因为互斥锁的一个明显的特点就是它只有两种状态:锁定和非锁定,而条件变量可以通过允许线程阻塞和等...
- 面试题-Linux系统优化进阶学习(linux系统的优化)
-
一.基础必备优化:1.关闭SElinux2.FirewalldCenetOS7Iptables(C6)安全组(阿里云)3.网络管理服务||NetworkManager|network...
- 嵌入式Linux开发教程:Linux Shell
-
本章重点介绍Linux的常用操作和命令。在介绍命令之前,先对Linux的Shell进行了简单介绍,然后按照大多数用户的使用习惯,对各种操作和相关命令进行了分类介绍。对相关命令的介绍都力求通俗易懂,都给...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- maven镜像 (69)
- undefined reference to (60)
- zip格式 (63)
- oracle over (62)
- date_format函数用法 (67)
- 在线代理服务器 (60)
- shell 字符串比较 (74)
- x509证书 (61)
- localhost (65)
- java.awt.headless (66)
- syn_sent (64)
- settings.xml (59)
- 弹出窗口 (56)
- applicationcontextaware (72)
- my.cnf (73)
- httpsession (62)
- pkcs7 (62)
- session cookie (63)
- java 生成uuid (58)
- could not initialize class (58)
- beanpropertyrowmapper (58)
- word空格下划线不显示 (73)
- jar文件 (60)
- jsp内置对象 (58)
- makefile编写规则 (58)