FastAPI(Uvicorn)TLS连接在Client Hello后异常断开求助
Uvicorn TLS连接排查问题
我搭建了一个基于FastAPI的HTTPS服务器,启动命令如下:
uvicorn main:app --reload --ssl-keyfile=./certs/app-key.pem --ssl-certfile=./certs/full.chain.pem --port 9063 --host 192.168.2.201 --ssl-version=2
Postman可以正常通过https://192.168.2.201:9063访问服务,但某网络设备(调用相同API)无法建立TLS连接,该设备已正确配置信任CA证书。
已完成的排查:
- 网络设备成功与
192.168.2.201:9063建立TCP连接 - 设备发送的TLS Client Hello中,TLS信封版本为1.0,内部Client Hello版本为1.2
- FastAPI应用回复空ACK后发送FIN断开连接
推测Uvicorn不认可该TLS协商的版本或密码套件,用nmap扫描发现Uvicorn仅支持TLS 1.2和1.3:
michal@certs % nmap --script ssl-enum-ciphers -p 9063 192.168.2.201 Starting Nmap 7.93 ( https://nmap.org ) at 2022-12-27 12:27 CET Nmap scan report for ise.example.com (192.168.2.201) Host is up (0.00024s latency). PORT STATE SERVICE 443/tcp open https | ssl-enum-ciphers: | TLSv1.2: | ciphers: | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (ecdh_x25519) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A | compressors: | NULL | cipher preference: server | TLSv1.3: | ciphers: | TLS_AKE_WITH_AES_256_GCM_SHA384 (ecdh_x25519) - A | TLS_AKE_WITH_CHACHA20_POLY1305_SHA256 (ecdh_x25519) - A | TLS_AKE_WITH_AES_128_GCM_SHA256 (ecdh_x25519) - A | cipher preference: server |_ least strength: A
尝试过的操作:
- 指定
--ssl-version=1时提示错误:invalid or unsupported protocol version 1 - 指定
--ssl-version=3(对应TLS1.0)后,设备的TLS协商仍被Uvicorn拒绝
请问:如何排查并确认Uvicorn断开该TLS会话的原因?
内容的提问来源于stack exchange,提问作者user2913139
相关产品推荐
相关产品推荐

