ussl – SSL/TLS Protocol - QuecPython 使用这个链接的例子跑在EC600U上显示如下问题
import example
example.exec(‘/usr/ussl_test.py’)
INFO:SOCKET:Network connection successful!
Traceback (most recent call last):
File “/usr/ussl_test.py”, line 33, in
OSError: [Errno 103] ECONNABORTED
不知道什么原因引起的?我应该如何解决呢?
该报错属于连接已建立后被对端中止,常见发生在 TLS 握手阶段或 HTTPS 请求阶段。EC600U 网络已注册成功,但 SSL 连接未正常完成。
建议按以下方向排查:
-
检查示例中的服务器地址和端口
- 确认域名、端口可用,一般 HTTPS 使用 443。
- 若示例中的测试服务器不可访问或已关闭,会触发
ECONNABORTED。
-
使用域名时建议带
server_hostname
TLS 证书校验/SNI 场景下,建议写法类似:
import usocket
import ussl
host = "你的HTTPS域名"
port = 443
addr = usocket.getaddrinfo(host, port)[0][-1]
sock = usocket.socket()
sock.connect(addr)
ssl_sock = ussl.wrap_socket(sock, server_hostname=host)
req = "GET / HTTP/1.1\r\nHost: {}\r\nConnection: close\r\n\r\n".format(host)
ssl_sock.write(req.encode())
print(ssl_sock.read())
ssl_sock.close()
-
确认模块时间是否正确
访问需要证书校验的 HTTPS 服务时,系统时间异常可能导致握手失败。可先同步网络时间后再测试。 -
确认固件支持当前
ussl用法
不同 QuecPython 固件版本对 TLS、证书、加密套件支持可能存在差异。若同一脚本在其他环境正常、EC600U 固件上失败,建议升级到对应型号较新的 QuecPython 固件后再验证。 -
若使用自签名证书或私有服务器
需要确认服务器 TLS 版本、证书链、加密套件是否被模块支持。建议先用公网标准 HTTPS 服务测试,确认ussl基础能力正常,再切换到目标服务器。
可以优先修改示例中的 HTTPS 域名,并在 ussl.wrap_socket() 中加入 server_hostname=host 进行验证。
本回答仅供参考。若问题已解决,可标记为
解决方案 ;若仍有疑问,请等待官方技术人员回复,最终请以专业解答为准。
在EC600U上使用这个固件QPY_OCPU_V0001_EC600U_CNLB_BT_FW,我看是支持ussl,但是跑ussl的例子和import usocket
import ussl
host = “你的HTTPS域名”
port = 443
addr = usocket.getaddrinfo(host, port)[0][-1]
sock = usocket.socket()
sock.connect(addr)
ssl_sock = ussl.wrap_socket(sock, server_hostname=host)
req = “GET / HTTP/1.1\r\nHost: {}\r\nConnection: close\r\n\r\n”.format(host)
ssl_sock.write(req.encode())
print(ssl_sock.read())
ssl_sock.close()
这个例子(域名是myssl.com,用浏览器打开能正常访问)会报错,错误是Traceback (most recent call last):
File “/usr/test_ussl_simple.py”, line 11, in
OSError: [Errno 103] ECONNABORTED
和上边报一样的错误。然后我更换了QPY_OCPU_V0004_EC600U_CNLB_FW固件,依旧不行。
麻烦帮我查下可能得原因,或者有最新固件,麻烦发我一份
Error103是软件主动断开的连接. 是本地达到最大重连次数之后, 服务器没回复SYN连接包ack. 本地认为网络&环境有问题, 主动断开的连接.
请确认测试服务器是否正常.