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

Django与MySQL安全连接配置报错:需解决强制加密连接问题

解决Django连接MySQL时的安全加密连接报错问题

针对你遇到的Connections using insecure transport are prohibited while --require_secure_transport=ON报错,可通过以下调整确保Django与MySQL建立加密连接:

1. 完善SSL配置参数

当前配置仅提供了客户端证书(cert)和密钥(key),但缺少CA证书(ca),且未明确强制SSL连接模式。调整后的配置需补充CA证书路径,并添加强制SSL连接的参数:

DATABASES['default']['ENGINE'] = 'django.db.backends.mysql'
DATABASES['default']['NAME'] = 'database'
DATABASES['default']['HOST'] = "v2_host"
DATABASES['default']['USER'] = "v2_user"
DATABASES['default']['PASSWORD'] = "password"
DATABASES['default']['CONN_MAX_AGE'] = 180
DATABASES['default']['OPTIONS'] = {
    'init_command': 'SET SESSION wait_timeout=300',
    'ssl_mode': 'REQUIRED',  # 强制要求SSL连接,拒绝非加密请求
    'ssl': {
        'ca': "/home/myuser/cacertpath",  # 替换为你的CA证书实际路径
        'cert': "/home/myuser/certpath",
        'key': "/home/myuser/keypath",
    }
}

2. 确保证书文件权限正确

Django运行进程(如web服务器用户www-data或应用专属用户)必须拥有证书文件的读取权限,建议将证书文件权限设置为600,避免其他用户访问:

chmod 600 /home/myuser/cacertpath /home/myuser/certpath /home/myuser/keypath
chown your_app_user:your_app_group /home/myuser/cacertpath /home/myuser/certpath /home/myuser/keypath

3. 验证加密连接是否生效

调整配置后,可在Django中执行以下代码验证连接是否已加密:

from django.db import connection
with connection.cursor() as cursor:
    cursor.execute("SHOW STATUS LIKE 'Ssl_cipher';")
    result = cursor.fetchone()
    print(result)

如果返回的Ssl_cipher值不为空(如ECDHE-RSA-AES256-GCM-SHA384),则说明加密连接已成功建立。

额外排查点

  • 检查mysqlclient版本:确保使用2.0.0及以上版本,旧版本对SSL参数的支持可能存在缺陷。
  • 确认服务器SSL要求:若MySQL服务器启用双向认证,需确保你的客户端证书和密钥已在服务器端注册;若仅单向认证,可能只需ca参数和ssl_mode: 'REQUIRED'即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:05:55