Uvicorn如何配置SSL证书实现HTTPS

老墨君_7201

老墨君_7201

2026-10-19

308人浏览

原创

uvicorn 能直接启用 https,但生产环境不推荐——需权衡安全、运维与性能;开发可命令行快速启动,生产应前置 nginx 等反向代理统一管理 tls。

uvicorn如何配置ssl证书实现https

Uvicorn 能直接启用 HTTPS,不需要额外反向代理——只要传对 --ssl-keyfile 和 --ssl-certfile,它就能跑起来。但生产环境是否该这么干,得看你的部署结构和安全要求。

用命令行启动 HTTPS 最简方式

这是开发或单机测试最快路径,Uvicorn 内置支持,无需改代码:

  • uvicorn main:app --ssl-keyfile=./key.pem --ssl-certfile=./cert.pem --port 443 是最基础组合;端口 443 需要 root 权限,非 root 用户可改用 --port 8443
  • 证书必须是 PEM 格式;如果私钥带密码,必须加 --ssl-keyfile-password,否则 Uvicorn 启动失败并报错 ValueError: Password was not given but private key is encrypted
  • 若用 Let's Encrypt,路径通常是 /etc/letsencrypt/live/example.com/fullchain.pem(证书)和 privkey.pem(私钥),注意别把 chain.pem 当主证书传
  • 不推荐在命令行里硬编码密码;生产环境应改用配置文件或环境变量(如通过 UVICORN_SSL_KEYFILE_PASSWORD)

在 Python 代码里调用 uvicorn.run() 配置 SSL

适合需要动态判断环境、加载不同证书路径的场景,但要注意:此方式无法热重载(reload=True)与多进程(workers>1)共存。

Uvicorn 0.52.1
Uvicorn 0.52.1

Uvicorn 0.52.1 是 Python ASGI Web 服务器,提供异步应用服务及 WebSocket 支持,常用于 FastAPI、Starlette 等应用的开发和部署。本下载为官方 PyPI 通用 wheel 包,可使用 pip 安装,并由包管理器处理所需依赖。

下载
  • 必须放在 if __name__ == "__main__": 块内,否则多进程启动时会重复执行 uvicorn.run()
  • 参数名和命令行一致,只是去掉了双横线:ssl_keyfile、ssl_certfile、ssl_keyfile_password
  • 示例片段:
    import uvicorn
    from fastapi import FastAPI
    
    app = FastAPI()
    
    if __name__ == "__main__":
        uvicorn.run(
            "main:app",
            host="0.0.0.0",
            port=8443,
            ssl_keyfile="./private.key",
            ssl_certfile="./certificate.crt",
            ssl_keyfile_password="secret123"
        )
  • 若证书路径来自配置中心或环境变量,记得提前做存在性检查,否则报错 FileNotFoundError: [Errno 2] No such file or directory

Uvicorn 自带 SSL 不等于生产就安全

它能跑 HTTPS,但默认配置离生产就绪还有距离。几个关键点容易被跳过:

  • TLS 版本太老:Uvicorn 默认用 TLS 1.2(--ssl-version=2),建议显式设为 --ssl-version=4(对应 TLS 1.3),避免降级攻击
  • 加密套件宽松:不指定 --ssl-ciphers 时会启用弱算法;推荐至少限制为 ECDHE+AESGCM:ECDHE+CHACHA20,禁用 CBC 模式和 RSA 密钥交换
  • 没有 OCSP Stapling 支持:Uvicorn 本身不提供证书状态实时验证,客户端需自行发起 OCSP 请求;如需此功能,必须前置 Nginx 或 Caddy
  • 单向认证 ≠ 双向认证:只配 ssl_certfile 和 ssl_keyfile 是单向;双向需额外加 --ssl-ca-certs ca.pem --ssl-cert-reqs 2,但此时客户端证书信息不会透传到 FastAPI 的 request 对象中

为什么生产环境通常不直接用 Uvicorn 终止 TLS

不是不能,而是不推荐——Uvicorn 的 SSL 实现偏轻量,缺少企业级 TLS 管理能力。

  • Nginx 可集中管理多个域名的证书自动续期(配合 certbot)、支持 SNI、提供连接缓冲和限速,Uvicorn 做不到
  • Uvicorn 多进程下每个 worker 都要独立加载证书和私钥,内存开销翻倍;Nginx 单进程管理 TLS,后端走 HTTP 明文更高效
  • 日志和监控粒度更细:Nginx 可记录 TLS 版本、加密套件、握手耗时;Uvicorn 日志里只有连接建立/断开,看不到这些细节
  • 若你已在用 Nginx 做反代,再让 Uvicorn 开 SSL 就是冗余加密,反而增加延迟和调试复杂度

真正难的不是“怎么配”,而是“配完之后谁来轮换证书、谁来监控过期、谁来处理吊销列表”。Uvicorn 的 SSL 是个可用的起点,但别把它当成终点。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

uvicorn ssl

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1771

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

4584

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1729

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

26997

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3267

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3267

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1203

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

596

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2543

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方部署指南
Uvicorn官方部署指南

共0课时 | 0人学习

Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习