一只开发狗001 2024-04-17 17:22 采纳率: 22.2%
浏览 3
已结题

java项目连接SqlServer数据库报错

我们研发的软件是springboot项目,数据库用的是sqlserver 2016,一直以来按操作手册部署都没有任何问题。现在遇到一个问题,用户环境用的是windows server 2019 标准版,sqlserver 2016也是英文版,然后正常部署,连接就报了ssl相关的错误。
还有我不明白为什么要用ssl,因为我们一直也没特别配置过ssl证书什么的。
请问该如何解决,GPT我用了好几款都没用,还请认真回答,否则拉黑,感谢!

img

  • 写回答

11条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-17 17:22
    关注

    引自免费微信小程序:皆我百晓生

    针对您所描述的问题,您的Java Spring Boot项目在连接SQL Server 2016数据库时遇到了SSL相关错误。根据提供的堆栈跟踪信息,错误提示为“Unexpected rethrowing”以及“SQL Server did not return a response. The connection has been closed.”。为解决这个问题,您可以按照以下步骤进行排查与配置:

    步骤一:检查SQL Server SSL设置

    确保SQL Server实例启用了SSL加密,并且配置正确。登录到SQL Server Management Studio(SSMS),执行以下T-SQL命令查看当前SSL设置:

    SELECT * FROM sys.configurations WHERE name = 'Force Encryption';
    

    如果返回值为0,表示未强制启用SSL。若要强制所有客户端连接使用SSL,您需要将其设置为1

    EXEC sp_configure 'show advanced options', 1;
    RECONFIGURE;
    
    EXEC sp_configure 'force protocol encryption', 1;
    RECONFIGURE;
    

    重启SQL Server服务使更改生效。

    步骤二:验证SSL证书

    确认SQL Server使用的SSL证书有效且受信任。在SSMS中,尝试通过启用SSL的连接方式连接到服务器(在连接属性中勾选“Encrypt connection”)。如果连接成功,说明SSL证书有效。若失败,请检查证书是否已安装到正确的证书存储(本地计算机\个人或受信任的根证书颁发机构)并确保其有效期和链完整性。

    步骤三:更新JDBC驱动版本

    确保您使用的Microsoft JDBC Driver for SQL Server版本与SQL Server 2016兼容且无已知SSL问题。访问官方下载页面获取最新版本,并在项目中替换现有驱动。

    步骤四:配置JDBC连接字符串

    在Spring Boot项目的application.properties或application.yml文件中,调整JDBC连接字符串以明确指定SSL相关参数。例如:

    spring.datasource.url=jdbc:sqlserver://SISVN06517.sgm.shanghaigm.com:1433;databaseName=PanshSQL;encrypt=true;trustServerCertificate=true
    

    这里设置了:

    • encrypt=true:强制使用SSL加密。
    • trustServerCertificate=true:信任服务器提供的证书,无需验证其链完整性。仅在测试或内部环境中使用此选项,生产环境应使用受信任的证书。

    步骤五:禁用SSL验证(仅用于临时调试)

    如果以上步骤仍无法解决问题,可以暂时禁用SSL验证以进行调试。在Java代码中添加系统属性或在启动脚本中添加JVM参数:

    System.setProperty("jsse.enableSNIExtension", "false");
    

    java -Djsse.enableSNIExtension=false -jar your-app.jar
    

    **注意:**禁用SSL验证仅适用于临时调试,不应在生产环境中使用。

    通过上述步骤逐一排查与配置,应该能解决您的SSL连接问题。如果问题依然存在,请提供更详细的日志信息以便进一步分析。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月17日
  • 修改了问题 4月17日
  • 创建了问题 4月17日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度