最近在研究 IoT SiteWise 要如何跟 IoT Core 或其他服務整合
就嘗試了在 win10 + python 3.9.7 環境下跑 tutorial
一試不得了馬上報錯...
錯誤訊息 ConnectionResetError: [WinError 10054] 也是籠統得讓人一頭霧水
反正就是 Server 關了 Client 連線
嘗試改用 paho mqtt library 簡單連線到 aws 還是一樣的錯誤
(本來想用 curl 但 mqtts 還未支援)
用 wireshark 抓封包來看以為是 TLSv1 Record Layer: Handshake Procotol 這邊用 TLSv1 造成
接著改 python code 強制使用 TLSv1.2 都沒用
然後再嘗試用 linux 環境跑也一樣的錯誤
(後來查 TLSv1 Record Layer 只是向前相容 主要看下一層內容的 version)
最後在家跑居然有成功!!
然後再仔細看 aws transport security 限制邊比對封包
才終於發現錯誤的封包少了 SNI extenstion !
再追下去為什麼會少 看到 python 有說 wrap_socket 已經 deprecated 不支援 SNI
而 AWSIoTPythonSDK & paho 就是使用 wrap_socket
追了好久才查到的原因 要解決的話要嘛照 python 官方建議使用 create_default_context
如果不行就改用舊版 python 3.6
ref:
python packages
AWSIoTPythonSDK==1.4.9
psutil==5.8.0
https://www.analysisman.com/2021/06/wireshark-tls1.2.html
https://docs.aws.amazon.com/iot-sitewise/latest/userguide/ingest-data-from-iot-things.html
https://docs.aws.amazon.com/iot/latest/developerguide/transport-security.html
留言列表