You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JBoss连接SQL Server报错:证书不符合算法约束问题如何解决?

问题根因

报错的核心原因是你连接的SQL Server侧使用的SSL自签名fallback证书为1024位RSA密钥,而当前JDK的安全策略配置中对RSA密钥长度有合规限制,1024位RSA不符合校验规则导致握手失败。
你复制正常服务器的java.security文件后问题未解决,大概率是故障服务器的JBoss启动时指定了自定义的安全策略文件,启动参数-Djava.security.properties会覆盖JDK全局的java.security配置,优先加载自定义路径的策略文件。

解决方案

临时快速恢复方案(不推荐生产环境长期使用)

  • 调整JDBC连接参数,在JDBC连接串中添加trustServerCertificate=true和encrypt=optional,跳过服务端证书校验,修改完成后重启JBoss即可生效。
  • 若需调整JDK安全策略:检查JBoss启动脚本中指定的java.security文件路径,修改对应文件的jdk.certpath.disabledAlgorithms配置,将RSA keySize < 1024修改为RSA keySize < 1023,同时修改jdk.security.legacyAlgorithms配置移除RSA keySize < 2048规则,重启JBoss生效。

永久合规解决方案

不需要生成新的1024位证书,1024位RSA已属于不安全加密算法,推荐生成或替换为2048位及以上长度的RSA证书:

从正常服务器复制证书操作步骤

  1. 在正常运行的SQL Server上导出证书:
    打开SQL Server配置管理器 → 进入对应实例的「SQL Server网络配置」→ 右键协议选择「属性」→ 切换到「证书」tab → 选中在用证书点击「查看」→ 切换到「详细信息」tab 点击「复制到文件」,导出为Base64编码的CER格式文件。
  2. 将导出的CER文件上传到故障服务器,执行keytool命令导入到JBoss使用的JDK信任库:
    keytool -importcert -file /path/to/your/sqlserver.cer -alias sqlserver_ssl -keystore $JAVA_HOME/jre/lib/security/cacerts
    
    JDK默认信任库密码为changeit,导入时根据提示确认操作即可。
  3. 重启JBoss服务生效。

生成新合规自签名证书操作步骤

  1. 使用openssl生成2048位RSA密钥和证书:
    openssl req -x509 -newkey rsa:2048 -keyout sqlserver.key -out sqlserver.cer -days 3650 -nodes
    
  2. 合并密钥和证书为PFX格式:
    openssl pkcs12 -export -out sqlserver.pfx -inkey sqlserver.key -in sqlserver.cer
    
  3. 将PFX证书导入SQL Server所在服务器的计算机个人证书存储,在SQL Server配置管理器中选择该证书作为SSL证书,重启SQL Server服务。
  4. 按上述「从正常服务器复制证书」的步骤2-3,将CER格式证书导入故障服务器JDK信任库,重启JBoss即可。

内容的提问来源于stack exchange,提问作者Dr Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:06:13