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

如何在Flask API中配置含uca.cer的CA SSL证书

在Flask中配置包含中间证书(uca.cer)的SSL证书

Flask的ssl_context参数直接传三元组是不支持的,你可以通过以下两种方法解决:

方法一:合并证书链文件

将你的server.cer(服务器证书)和uca.cer(中间证书)合并成一个完整的证书链文件,顺序很重要:

  1. 打开server.cer,复制所有内容
  2. 打开uca.cer,将内容追加到server.cer内容的后面,保存为新文件比如full_chain.cer
  3. 修改Flask启动代码,使用合并后的证书链:
from flask import Flask, abort, request, jsonify
app = Flask(__name__)
...
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, ssl_context=('full_chain.cer', 'server.key'))

方法二:手动创建SSLContext对象

利用Python标准库的ssl模块创建SSLContext对象,直接加载三个文件:

from flask import Flask, abort, request, jsonify
import ssl

app = Flask(__name__)
...

if __name__ == '__main__':
    # 创建TLS服务器上下文
    context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
    # 加载证书、密钥和中间证书
    context.load_cert_chain(certfile='server.cer', keyfile='server.key', cafile='uca.cer')
    app.run(host='0.0.0.0', port=5000, ssl_context=context)

说明

Flask的ssl_context参数如果传入元组,仅支持(证书文件路径, 密钥文件路径)的格式,第三个参数不会被解析,所以直接传三元组会运行失败。使用上述两种方法,就能让浏览器正确识别完整的证书链,解决安全提示问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:42:11