最近公司的系統發現如果連 AWS IoT 會出現 “negotiation failed with error certificate is untrusted” 我查了一下發現是因為 symantec certificate authority 的關係
發生原因
我們可以直接一起來看一下舊版的網址大概長得像是 https://example.iot.us-west-2.amazonaws.com/ 連進去之後可以看到,我們這張憑證其實是經由賽門鐵克(Symantec)所簽發的,所以才會發生 “NET::ERR_CERT_AUTHORITY_INVALID” 的問題
在 2018/10/17 Chrome 70 的更新移除了 Symantec 的憑證,所以連線會出現錯誤

解決方法
可以在官方文件發現我們可以把網址換到 Amazon Trust Services(ATS),更新方法只要輸入
$ aws iot describe-endpoint --endpoint-type iot:Data-ATS { "endpointAddress": "example-ats.iot.us-west-2.amazonaws.com" }
轉換完會收到網址,這邊換完之後會發現 AWS Console 剩下新的網址,舊的網址雖然不會顯示,不過還是可以使用的
檢查憑證
來看一下憑證的資訊就可以看到簽發人變成 Amazon 了

參考資料
- https://www.ithome.com.tw/news/99633
- https://aws.amazon.com/tw/blogs/iot/aws-iot-core-ats-endpoints/