UvicornSSL证书报错怎么配置

云杰姑娘_4347

云杰姑娘_4347

2026-11-11

246人浏览

原创

Uvicorn启动SSL报“ssl_certfile not found”主因是路径错误、文件缺失或权限不足;必须用绝对路径或准确相对路径,确认文件存在可读,私钥需PEM格式且无密码(除非指定password),Docker需挂载证书目录,自签名证书须导入系统信任库。

uvicornssl证书报错怎么配置

Uvicorn启动时提示“ssl_certfile not found”或“No such file”

这是最常见问题:路径写错、文件没放对位置、权限不足,三者占九成。Uvicorn不会自动补全路径,--ssl-certfile 和 --ssl-keyfile 必须是**绝对路径**或相对于当前 shell 工作目录的**准确相对路径**。

实操建议:

  • 先用 ls -l ./cert.pem ./key.pem 确认文件真实存在且可读(注意不是 ls cert.pem —— 隐藏的换行或空格会让它“看起来存在”却打不开)
  • 在命令中直接写绝对路径,例如:uvicorn main:app --ssl-certfile /home/user/app/cert.pem --ssl-keyfile /home/user/app/key.pem
  • 私钥文件必须是 PEM 格式且无密码(除非你显式传了 --ssl-keyfile-password);若用 OpenSSL 生成,确保没漏掉 -nodes 参数
  • Linux/macOS 下检查 SELinux 或 AppArmor 是否拦截(ausearch -m avc -ts recent),Docker 容器里记得用 -v 挂载证书目录

Uvicorn报错“SSLV3_ALERT_BAD_CERTIFICATE”或“CERTIFICATE_VERIFY_FAILED”

这不是 Uvicorn 自己出的问题,而是 Python 的 SSL 上下文校验失败——通常因为证书链不完整、域名不匹配、或用了自签名证书但没关验证。

实操建议:

  • 用 openssl x509 -in cert.pem -text -noout | grep -E "(Subject|Issuer|DNS)" 检查证书 Subject CN 或 SAN 是否覆盖你访问的域名(比如用 https://localhost 却配了 example.com 的证书)
  • 如果是自签名证书,客户端(如 curl、requests)默认会拒绝;开发时加 -k(curl)或 verify=False(requests),但**绝不能在生产代码里关验证**
  • Let’s Encrypt 的 fullchain.pem 必须包含中间证书;只传 cert.pem 会导致部分客户端(尤其是 Python urllib)校验失败
  • Uvicorn 不处理客户端证书验证,这个错误一定来自服务端证书本身或客户端发起的连接,和 --ssl-ca-certs 无关

配置了SSL但浏览器仍显示“不安全”,或提示“您的连接不是私密连接”

根本原因通常是证书未被操作系统/浏览器信任,而非 Uvicorn 配置错误。Uvicorn 只负责加载并启用 TLS,不参与证书信任链构建。

SSL Certificate Checker
SSL Certificate Checker

SSL/TLS 证书到期检查器和域名健康监控。检查证书到期、颁发者信息、SAN 条目及证书链有效性,适用于单个或多个域名。

下载

实操建议:

  • 自签名证书:必须手动将 ca.pem 导入系统根证书库(macOS 钥匙串、Windows 证书管理器、Linux 的 update-ca-certificates),否则任何标准客户端都会告警
  • Let’s Encrypt 证书:确认用的是 fullchain.pem 而非 cert.pem;检查 Nginx(如果前置)是否透传了完整链,或是否误启用了 ssl_trusted_certificate
  • 端口是否被正确映射?Uvicorn 默认监听 --port 8000,但 HTTPS 标准端口是 443;若没用 Nginx 反代,需显式指定 --port 443 并用 root 权限运行(或用 setcap 'cap_net_bind_service=+ep' $(which python))

想用代码方式配置SSL却启动失败

uvicorn.run() 支持 SSL 参数,但极易因进程模型冲突崩溃——尤其加了 workers > 1 或 reload=True 时。

实操建议:

  • 只在单进程、无重载场景下用代码配置,例如本地调试:uvicorn.run("main:app", ssl_keyfile="key.pem", ssl_certfile="cert.pem")
  • 生产环境一律用命令行启动,避免 if __name__ == "__main__" 在多进程 fork 时重复加载证书导致 fd 耗尽或内存泄漏
  • 不要在代码里拼接路径(如 os.path.join(os.getcwd(), "cert.pem")),工作目录可能和预期不一致;优先用命令行传绝对路径
  • 若必须代码控制,把证书路径设为环境变量,再由命令行读取:uvicorn main:app --ssl-certfile $CERT_PATH

真正容易被忽略的点是:Uvicorn 的 SSL 是“终止型”的,它不透传原始 TLS 元数据。哪怕你配对了证书,FastAPI 应用层也收不到 Client-Cert 或协议版本信息——需要双向认证或证书字段鉴权时,必须用 Nginx 做 TLS 终止并注入 HTTP Header。

相关文章

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

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

下载

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

相关专题

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

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

2023.07.20

1911

4

python能做什么
python能做什么

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

2023.07.25

5304

7

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

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

2023.07.31

1849

3

python教程
python教程

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

2023.08.03

32077

23

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

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

2023.08.04

3787

5

python eval
python eval

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

2023.08.04

3807

5

scratch和python区别
scratch和python区别

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

2023.08.11

1263

5

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

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

2023.08.10

616

4

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

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

2023.08.11

2943

5

热门下载

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

精品课程

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

共0课时 | 0人学习

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

共0课时 | 0人学习