如何忽略「请升级至TLSv1.2」警告?Spring Boot连接SQL Server问题
解决方案
1. 通过JDBC连接属性关闭TLS版本检测警告
mssql-jdbc 10.2及以上版本新增了disableTlsVersionDetection属性,专门用来关闭TLS版本检测的警告逻辑。你只需要把这个属性添加到JDBC连接URL中即可:
spring.datasource.url=jdbc:sqlserver://myhostname;databaseName=mydb;encrypt=false;disableTlsVersionDetection=true;
这个配置会直接禁用驱动对TLS版本的检测,从而不再输出你遇到的那条警告,完全满足你不想降级驱动的需求。
2. 明确指定TLS协议版本(可选补充)
如果上面的配置仍未解决问题,可以尝试在URL中额外添加sslProtocol=TLSv1,明确告诉驱动使用TLSv1协议,避免驱动在协商过程中产生额外的检测日志:
spring.datasource.url=jdbc:sqlserver://myhostname;databaseName=mydb;encrypt=false;disableTlsVersionDetection=true;sslProtocol=TLSv1;
3. 调整Hibernate日志级别(治标方案)
如果前两种方法都不生效,你可以通过降低SqlExceptionHelper的日志级别来隐藏警告。比如在你的日志配置文件(如logback.xml)中添加:
<logger name="org.hibernate.engine.jdbc.spi.SqlExceptionHelper" level="ERROR" />
这样该类的WARN级别日志就不会再被输出,但这只是隐藏警告,并没有从根源上关闭检测逻辑,优先推荐前两种方法。
为什么旧版本驱动没有警告?
mssql-jdbc 8.x版本还未引入TLS版本检测的逻辑,所以不会触发这个警告;而11.x版本新增了该检测机制,即使设置encrypt=false,驱动仍会在连接过程中进行TLS版本的检查并输出警告。
内容的提问来源于stack exchange,提问作者Mahmoud Saleh
相关产品推荐
相关产品推荐

