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

Gunicorn v22配置ssl_context仅启用TLSv1.3失败求助

解决Gunicorn v22仅启用TLSv1.3的配置问题

你当前的配置仅设置了TLS最小版本为v1.3,但Gunicorn的默认SSL上下文可能未限制最大版本,或者默认工厂的配置覆盖了你的设置,导致TLSv1.2仍能建立连接。以下是修复方案:

方案一:同时限制最小和最大TLS版本

修改gunicorn.conf.py中的ssl_context函数,同时指定最小和最大版本为TLSv1.3,确保仅允许该版本的连接:

def ssl_context(conf, default_ssl_context_factory):
    import ssl
    context = default_ssl_context_factory()
    context.minimum_version = ssl.TLSVersion.TLSv1_3
    context.maximum_version = ssl.TLSVersion.TLSv1_3
    return context

方案二:手动创建SSL上下文(更可靠)

如果默认工厂的配置仍存在干扰,可以直接手动创建仅支持TLSv1.3的SSL上下文,同时确保证书和密钥路径配置正确:

# 先配置证书与私钥路径
certfile = "/path/to/your/certificate.pem"
keyfile = "/path/to/your/private-key.pem"

def ssl_context(conf, default_ssl_context_factory):
    import ssl
    # 创建仅用于TLS服务器端的上下文
    context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
    # 加载证书链
    context.load_cert_chain(conf.certfile, conf.keyfile)
    # 强制仅使用TLSv1.3
    context.minimum_version = ssl.TLSVersion.TLSv1_3
    context.maximum_version = ssl.TLSVersion.TLSv1_3
    return context

注意事项

  • 启动Gunicorn时不要通过命令行参数(如--ssl-version)指定其他TLS版本,命令行参数会覆盖配置文件的设置。
  • 用openssl工具验证配置是否生效:
    # 测试TLSv1.2是否被拒绝(应连接失败)
    openssl s_client -connect your-domain:your-port -tls1_2
    # 测试TLSv1.3是否正常连接(应成功)
    openssl s_client -connect your-domain:your-port -tls1_3
    
  • 确认Python版本在3.7及以上,ssl.TLSVersion是Python 3.7新增的API。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:12:41