close

最近在研究 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

https://curl.se/docs/mqtt.html

https://docs.python.org/3/library/ssl.html#ssl.wrap_socket

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 JohnDX 的頭像
    JohnDX

    我要回家想一想~

    JohnDX 發表在 痞客邦 留言(0) 人氣()