最近公司的系統發現如果連 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/
《AWS CDK 完全學習手冊:打造雲端基礎架構程式碼 IaC》
第 12 屆 iT 邦幫忙鐵人賽 DevOps 組冠的《用 CDK 定 義 AWS 架構》
第 11 屆 iT 邦幫忙鐵人賽《LINE bot 好好玩 30 天玩轉 LINE API》
一個熱愛分享的雲端工程師!