我有一个公共的WebSocket服务器正在运行,我有数百个嵌入式设备连接到它。
我想把我的服务器搬到亚马逊,所以我做了一个EC2示例,并在上面安装了我的软件。
当我尝试从浏览器连接时,连接成功,但是当使用嵌入式设备进行测试时,我从标题中获得错误:
(-30592, 'MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE')
字符串
该设备是乌藨子皮科W的和运行不稳定的微Python版本(v1.19.1 2022-09-26),我不能改变不幸.
下面是违规代码:
import usocket as socket
import ussl
uri = urlparse("wss://...")
assert uri
sock = socket.socket()
# allow 30 seconds for initial ws connection
sock.settimeout(30)
addr = socket.getaddrinfo(uri.hostname, uri.port)
sock.connect(addr[0][4])
if uri.protocol == 'wss':
try:
sock = ussl.wrap_socket(sock, server_hostname=uri.hostname)
except Exception as e:
sock.close()
print(e)
型
我在本地安装了WebSocket服务器软件,并让我的嵌入式设备在本地网络上连接到它(使用自签名证书),所以我倾向于相信这个错误与我在亚马逊上设置它的方式有关。
到目前为止,我对问题可能在哪里有两个想法:
1.我读到亚马逊正在放弃对TLS < 1.2的支持,老实说,我认为这不应该与我的示例有关,但谁知道呢?
1.我不知道流量是如何通过AWS路由的,以及它是如何到达我的EC2示例的,服务器在那里运行,可能TLS在某个地方中断了。
如果有更多AWS经验的人可以帮助我,我将非常感谢。
1条答案
按热度按时间qlfbtfca1#
根据法律,我花了2天时间把头撞在墙上,然后一旦我提出一个问题,我就找到了解决方案。
显然,我在我的新机器上获得了ECDSA证书,并且似乎在Micropython v1.20.0中添加了ECDSA支持
我所要做的就是恢复到RSA,使用
certbot
不会更容易:字符串
最初我决定删除这个问题,因为这是一个非常具体的案例,可能没有其他人会陷入,但如果有人这样做,这里是。