1、概述
本文主要介紹HaaS100 對更新的固件做驗簽的功能進而防止更新非法固件;如下圖流程所示,當使用者開啟阿裡雲IOT物聯網平台的安全更新功能,對應的産品就啟動了針對這個産品的安全更新功能,雲端會對這個産品的更新固件做秘鑰、公鑰管理并對這個産品的固件做數字簽名;對應的裝置端,在OTA的過程中,會用從雲端擷取的公鑰對更新的固件做數字簽名的驗證;整個流程,使用者不需要管理公私鑰,使用起來也非常友善,下圖為HaaS100 安全更新使用流程圖:

2、使用流程
2.1、開發環境搭建
元件使用示例相關的代碼下載下傳、編譯和固件燒錄均依賴AliOS Things配套的開發工具 alios-studio ,是以首先需要參考
《aos-studio使用說明之搭建開發環境》,下載下傳安裝 alios-studio ,待開發環境搭建完成後,可以按照以下步驟進行示例的測試。
2.2、 建立工程
建立新的工程:
元件的示例代碼可以通過編譯連結到AliOS Things的任意案例(solution)來運作,這裡選擇ota_demo案例, 開發闆:HaaS100。
ota_demo案例相關的源代碼下載下傳可參考
《aos-studio使用說明之建立工程》。
打開已有工程:
如果用于測試的案例工程已存在,可參考
《aos-studio使用說明之打開工程》打開已有工程。
2.3、打開雲端安全更新功能并擷取公鑰
2.4、将公鑰内嵌到代碼中
如步驟1圖示,通過複制按鈕擷取的公鑰内嵌到 AliOS-Things/components/dm/ota/hal/ota_hal_digest.c檔案中,覆寫如下的兩個數組:
/* RSA Public Key:User needs sign in alibaba cloud to get and replace them. */
static const unsigned char ota_pubn_buf[256];
static const unsigned char ota_pube_buf[3];
2.5、配置固件版本号
根據需求修改版本号,如app-1.0.0等
修改位置:solutions/ota_demo/otaappdemo.c中的,MY_APP_VER宏定義。
2.6、配置四元祖
修改位置:solutions/ota_demo/otaappdemo.c中的,mqtt_main函數中的char product_key, char device_name, char *device_secret;填入自己的pk,dn,ds;
2.7、編譯固件
完成上面步驟後,就可以編譯ota_demo案例來生成固件了,具體編譯方法可參考
《aos-studio使用說明之編譯固件》2.8、燒錄固件
ota_demo案例的固件生成後,可參考
《aos-studio使用說明之燒錄固件》來燒錄固件。
2.9、打開序列槽
固件燒錄完成後,可以通過序列槽檢視示例的運作結果,打開序列槽的具體方法可參考
《aos-studio使用說明之檢視日志》當序列槽終端打開成功後,可在序列槽中輸入help來檢視已添加的測試指令。
2.10、配網連雲
輸入wifi賬号和密碼配網:在終端輸入:
netmgr -t wifi -c wifi_ssid wifi_password
注意修改其中的wifi_ssid和wifi_password為需要連接配接的wifi名字和wifi密碼。
連網成功後,登入
物聯網平台可以看到對應的裝置線上:
2.11、編譯上雲固件及雲端操作
本地燒錄完成後,需要做一個高版本固件上傳到雲端,通過雲端操作完成固件的更新,是以需要按照步驟3中修改版本号的方法,修改固件版本号,其他不用修改,再編譯生成一個高版本的固件,然後登入
平台,按如下圖順序操作:
點選添加強件後,如下圖将platform/mcu/haas1000/release/write_flash_gui/ota_bin/ota_bin/ota_rtos_ota.bin上傳到雲端:
點選确定後,選擇驗證固件即可開始固件更新;
2.12、更新結果驗證
按照上面的操作步驟完成後,可以完成固件的數字簽名驗簽進而實作固件更新,端側的log如下圖:
如果開啟了安全更新,但HaaS100沒有内嵌公鑰,觸發更新會怎麼樣呢?答案是HaaS100會數字簽名驗證失敗,禁止固件更新,端側的log會如下圖所示:
雲端更新結果可以通過點選“檢視”擷取詳情;物聯網平台的OTA操作可參考文檔
阿裡雲物聯網平台固件更新文檔注:在做OTA之前確定裝置端已連接配接雲端
開發者支援
HaaS解決方案中心:
https://haas.iot.aliyun.com/HaaS技術社群:
https://blog.csdn.net/HaaSTech開發者釘釘群和公衆号見下圖,開發者釘釘群每天都有技術支援同學值班。