Uvicorn配置启用HTTPS后本地FastAPI服务无法通过HTTPS访问问题
排查及解决Uvicorn HTTPS无法访问问题
- 第一步:校验证书与密钥文件配置
- 确认
key.pem和cert.pem的路径是否正确:你当前使用的是相对路径./,需确保两个文件存放在运行Python脚本的工作目录下,而非app代码存放的目录。你可以先替换为绝对路径测试,避免路径读取失败,示例:ssl_keyfile="C:/your_project_path/key.pem" - 确认证书生成规则符合要求:本地自签名证书需保证Common Name或SAN(使用者可选名称)字段包含
localhost,否则浏览器会判定证书与访问域名不匹配直接拦截。你可以用openssl命令校验证书内容:openssl x509 -in cert.pem -text -noout,检查输出的Subject或Subject Alternative Name字段是否包含localhost。 - 若生成密钥时设置了访问密码,需在
uvicorn.run参数中添加ssl_keyfile_password="你的密钥密码",否则密钥无法正常读取,SSL服务会启动失败
- 确认
- 第二步:检查Uvicorn启动日志
启动脚本后查看控制台输出,确认是否存在SSL相关报错(如文件不存在、密钥格式错误等)。如果启动成功,日志中会显示https://localhost:8432的访问地址;如果显示的是http开头的地址,说明SSL配置未生效,Uvicorn自动降级为HTTP服务,问题出在证书/密钥的读取环节。 - 第三步:调整浏览器访问配置
- 访问时必须手动在地址栏补全
https://前缀,直接输入localhost:8432浏览器默认会走HTTP协议,自然无法访问HTTPS服务。 - 自签名证书默认不被浏览器信任,出现安全风险提示时,选择「高级」-「继续前往localhost」即可;如果是Chrome浏览器出现NET::ERR_CERT_INVALID提示无法点击继续,可在当前页面直接敲击键盘输入
thisisunsafe,即可自动跳过拦截。
- 访问时必须手动在地址栏补全
- 第四步:排查端口与防火墙限制
确认8432端口没有被其他程序占用,同时临时关闭Windows防火墙测试访问是否正常,避免防火墙拦截HTTPS请求。 - 第五步:命令行启动测试
你可以直接通过命令行启动Uvicorn排查代码配置问题,命令如下:
如果命令行启动后HTTPS可以正常访问,说明你代码中的路径配置存在错误,修正路径即可。uvicorn app.api:app --host localhost --port 8432 --reload --ssl-keyfile=./key.pem --ssl-certfile=./cert.pem
内容的提问来源于stack exchange,提问作者Minonja Nandraina Razakasoa
相关产品推荐
相关产品推荐

