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

Django应用连接SQL Server 2014时遇SSL算法不支持错误求助

解决Django连接SQL Server 2014的SSL签名算法不兼容问题

错误原因

你的Django容器使用OpenSSL 3.0.11,而SQL Server 2014仅支持SHA-1这类旧版SSL签名算法。OpenSSL 3.0默认禁用了这类被标记为不安全的旧算法,导致SSL握手失败,抛出legacy sigalg disallowed or unsupported错误。

可行解决方案

方法1:调整OpenSSL安全级别(推荐生产环境使用)

在运行Django的Docker容器中,放宽OpenSSL的安全策略,允许旧签名算法:

  • 方式一:修改容器内OpenSSL配置文件
    找到容器内的openssl.cnf文件(通常路径为/etc/ssl/openssl.cnf),添加或修改以下内容:

    [openssl_init]
    providers = provider_sect
    ssl_conf = ssl_sect  # 新增该行
    
    [ssl_sect]
    system_default = system_default_sect
    
    [system_default_sect]
    MinProtocol = TLSv1.2
    CipherString = DEFAULT@SECLEVEL=1
    

    修改完成后重启Django容器。

  • 方式二:通过环境变量临时调整(适配Docker部署)
    在Docker启动命令或docker-compose.yml中添加环境变量,无需修改配置文件:

    services:
      django-app:
        ...
        environment:
          - SSL_CIPHERS=DEFAULT@SECLEVEL=1
    

    该环境变量会让OpenSSL放宽安全策略,兼容SQL Server 2014支持的旧签名算法。

方法2:调整Django数据库连接选项(仅临时测试或非严格安全场景)

如果暂时无法调整OpenSSL配置,可尝试修改数据库连接的SSL选项:

  • 将'SSL Mode': 'require'改为'SSL Mode': 'disable'(注意:这会关闭SSL加密,生产环境不推荐)
  • 或添加'TrustServerCertificate': 'yes',但这仅跳过证书验证,无法从根本解决算法兼容问题,仅作临时排查使用。

方法3:升级SQL Server(长期解决方案)

SQL Server 2014已停止主流支持,升级至更高版本(如2019+)可支持更安全的现代SSL签名算法,从根源避免这类兼容问题。


内容的提问来源于stack exchange,提问作者Fabio Bove

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 12:18:11