DA 證書(shū)鏈之初體驗
1. 前言
本文引用地址:http://dyxdggzs.com/article/202402/455407.htm本文是上文 《STM32H5 DA 之初體驗(帶 TrustZone)》的后續之作。倘若你還沒(méi)有閱讀此 文,那么建議你先閱讀下,然后再回過(guò)頭來(lái)閱讀本文。
之前我們已經(jīng)講過(guò)了如何通過(guò) DA 認證來(lái)回退芯片產(chǎn)品狀態(tài),或者重新打開(kāi)調試口,這樣開(kāi) 發(fā)人員在芯片為 Closed 狀態(tài)下時(shí)仍可以調試芯片。在這個(gè) DA 認證過(guò)程中,有使用到兩個(gè)東 西:證書(shū)和私鑰,它與之前已經(jīng)預配置到芯片內部的 obk 文件是對應的關(guān)系。也就是說(shuō), 如果你 已經(jīng)預配置了芯片, 但對應的私鑰文件或者證書(shū)丟失或忘記保存了, 那么此芯片多半是無(wú)法再還原 了, 除非你找到對應的私鑰和證書(shū).
私鑰是如何來(lái)的 ? 如上文所述, 是通過(guò) TPC 工具生成的, 如下所示 :
點(diǎn)擊上圖中的 Regenerate 按鍵將自動(dòng)生成公鑰私鑰對.
當然你也可以使用其它工具來(lái)生成, 比如 openssl 工具, 只要是 ecdsa-p256 類(lèi)型的密鑰即可.
證書(shū)是怎么來(lái)的 ? 也是通過(guò) TPC 工具生成的 。
如上圖所示, 輸入根密鑰的私鑰和公鑰, 證書(shū)類(lèi)型選擇為 “ROOT”, 然后在操作許可內選擇 所有權限(完全回退/半回退 + 安全調試 + 非安全調試).最終點(diǎn)擊 “Generate Certificate”按鍵, 生成根證書(shū). 由于這里選擇的類(lèi)型為 ROOT, 輸入的密鑰也為根密鑰. 所以最終生成的證書(shū)為根證 書(shū). 它所許可的權限是最高的.
對于一個(gè)產(chǎn)品的開(kāi)發(fā), 可能由不同團隊一起合作開(kāi)發(fā)的, 比如, 有一團隊, 專(zhuān)門(mén)負責開(kāi)發(fā) secure 部分的代碼, 向 non secure 工程提供 API 接口, 將那些關(guān)鍵算法放入到 secure 世界加以保護, 僅 僅面向 non secure 工程開(kāi)放調用接口. 而另一個(gè)開(kāi)發(fā)團隊, 他們僅僅開(kāi)發(fā) non secure 部分的代 碼, 實(shí)現應用層大部分功能, 需要時(shí)調用 secure 部分代碼開(kāi)放出來(lái)的接口以實(shí)現特定的功能. 那么 對于這種不同的開(kāi)發(fā)團隊, 其所允許的權限必須有所不同, 開(kāi)發(fā) secure 部分的團隊, 必然希望他們 自己能調試 secure 部分的代碼, 但不希望開(kāi)發(fā) non secure 部分的開(kāi)發(fā)團隊也可以調試 secure 代碼. 但又要允許不影響他們可以調試自己 non secure 部分的代碼, 且可隨意回退 non secure 部分代碼. 如此復雜的權限控制, 就需要多個(gè)證書(shū)來(lái)實(shí)現了. 這就是證書(shū)鏈的意義所在.
2. 證書(shū)鏈介紹
在產(chǎn)品的開(kāi)發(fā)過(guò)程中, 我們假設有三個(gè)團隊:
· 安全開(kāi)發(fā)團隊: 負責開(kāi)發(fā) secure 部分代碼, 并向 non secure 提供 API 接口. 當芯片燒
錄完 secure 代碼后, 芯片會(huì )被設置為 TZ_Closed 狀態(tài).
· OEM 開(kāi)發(fā)團隊: 負責開(kāi)發(fā) non secure 部分代碼, 無(wú)法直接訪(fǎng)問(wèn) secure 世界的代碼, 但能調用 secure 提供的特定的 API 接口, 以完成特定功能. 此團隊拿到芯片時(shí), 芯片已 經(jīng)處于 TZ_Closed 狀態(tài). 在此狀態(tài)下, 開(kāi)發(fā) non secure 工程不受任何限制. 可以隨意 調試 NS 工程.
· 現場(chǎng)技術(shù)支持團隊: 產(chǎn)品到達終端客戶(hù), 若出現任何問(wèn)題, 需要現場(chǎng)進(jìn)行技術(shù)支持.
對于這三個(gè)團隊, 需要授予不同的權限. 安全開(kāi)發(fā)團隊需要授予平臺軟硬件完全訪(fǎng)問(wèn)的 權限. 且安全開(kāi)發(fā)團隊可向 OEM 團隊授予權限. 完全訪(fǎng)問(wèn)權限就包括了可完全回退+部分 回退, S+NS 調試.
OEM 開(kāi)發(fā)團隊的權限應該僅僅局限在 NS 部分, 不應該影響其 NS 代碼的調試, 當然回 退也不應該限制. 僅需要限制其調試 S 代碼的權利. 因此, OEM 團隊包括的權限應該有: 完 全回退+部分回退, NS 調試. 除此之外, OEM 開(kāi)發(fā)團隊應可向現場(chǎng)技術(shù)支持團隊授予權限 的能力.
現場(chǎng)技術(shù)支持團隊的權限應該僅限于回退的權利.而且僅能完全回退. 以便檢查硬件方面 的問(wèn)題.
針對這三個(gè)團隊的授權情況, 引入三級證書(shū). 根證書(shū), 一級證書(shū)和二級證書(shū). 分別對應這 三個(gè)團隊. 這種操作授權就放入到證書(shū)里邊.
如上圖所示, 安全開(kāi)發(fā)團隊使用自己的根證書(shū)和根密鑰. OEM 開(kāi)發(fā)團隊使用自己的一級密鑰和 一級證書(shū); 而現場(chǎng)技術(shù)支持團隊則使用自己的二級密鑰和二級證書(shū). 各自有自己的一套密鑰和證書(shū). 這里的密鑰是指私鑰. 那么這些密鑰和證書(shū)又是如何來(lái)的呢?
2.1. 密鑰和證書(shū)
這里的密鑰其實(shí)是指私鑰, 它和公鑰是一對的. 也就是說(shuō), 三個(gè)團隊其實(shí)都有自己的密鑰對. 在 做 DA 時(shí), 會(huì )使用到私鑰和證書(shū). 首先我們來(lái)看看這個(gè)密鑰對是如何來(lái)的呢?
如前文第一章節的前言部分, 我們就介紹了根密鑰對的來(lái)源, 它是由 TPC 工具內在不同的路徑 下點(diǎn)擊 Regenerate 按鍵后生成的. 那么對于 OEM 開(kāi)發(fā)團隊和現場(chǎng)技術(shù)支持團隊的密鑰對, 也是 這么生成的. 當然, 也可以通過(guò)第三方工具如 openssl 這類(lèi)的工具生成. 我們將三個(gè)團隊的密鑰(指 私鑰)分別叫做根密鑰, 一級密鑰, 二級密鑰. 它們是三個(gè)相互獨立的密鑰.
2.1.1. 根證書(shū)
如上圖所示, 根證書(shū)是安全開(kāi)發(fā)團隊自己用私鑰對自己的公鑰以及操作許可簽名產(chǎn)生的. 這個(gè) 證書(shū)授權完全回退, 以及 S 調試+NS 調試.
它的生成正如前文第 1 章節如所描述, 生成的就是根證書(shū).
2.1.2. 一級證書(shū)
一級證書(shū)是由安全開(kāi)發(fā)團隊負責生成, 但使用方卻是 OEM 開(kāi)發(fā)團隊. 也就是說(shuō), 它是由安全開(kāi) 發(fā)團隊授權給 OEM 開(kāi)發(fā)團隊的證書(shū).
如上圖所示, 它是拿 OEM 開(kāi)發(fā)團隊的公鑰出來(lái), 用安全開(kāi)發(fā)團隊的私鑰進(jìn)行簽名所產(chǎn)生, 再加
上授權許可. 它是安全開(kāi)發(fā)團隊的根證書(shū)的子證書(shū):
2.1.3. 中間證書(shū)
中間證書(shū)也是一級證書(shū), 它也是由安全團隊的根證書(shū)的子證書(shū), 由安全開(kāi)發(fā)團隊授權而來(lái). 與一 級證書(shū)不同地是, 它只能用來(lái)派生二級證書(shū), 并不能直接拿來(lái)用, 比如 DA 回退, DA 調試. 它僅僅 用來(lái)頒發(fā)二級證書(shū), 給證書(shū)管理者用的.
如上圖所示, 中間證書(shū)是拿 OEM 開(kāi)發(fā)團隊的公鑰, 用安全開(kāi)發(fā)團隊的私鑰簽名產(chǎn)生, 再加上操
作許可信息. 它是給 OEM 開(kāi)發(fā)團隊用的, 僅僅用于派生二級證書(shū). 它也是安全開(kāi)發(fā)團隊的根證書(shū) 的子證書(shū).
2.1.4. 二級證書(shū)
二級證書(shū)是給現場(chǎng)技術(shù)支持團隊用的. 它是由中間證書(shū)派生而來(lái):
如上圖所示, 在從中間證書(shū)派生二級證書(shū)時(shí), 拿二級公鑰出來(lái), 用一級私鑰進(jìn)行簽名的, 再加上 操作許可信息. 二級證書(shū)生成過(guò)程完全是由 OEM 開(kāi)發(fā)團隊負責的. 這里需要注意地是, 二級證書(shū) 是由中間證書(shū)派生而來(lái), 并不是由一級證書(shū)派生.
STM32H5 支持這三級證書(shū): 根證書(shū), 一級證書(shū), 中間證書(shū)和二級證書(shū), 其相互關(guān)系如下圖所示:
3. 動(dòng)手實(shí)驗
3.1. 實(shí)驗概覽
本實(shí)驗將分別扮演安全開(kāi)發(fā)團隊, OEM 開(kāi)發(fā)團隊和現場(chǎng)技術(shù)開(kāi)發(fā)團隊, 分別生成根證書(shū), 一級 證書(shū), 中間證書(shū)和二級證書(shū), 并驗證此證書(shū)的有效性.
3.2. 安全開(kāi)發(fā)團隊
安全開(kāi)發(fā)團隊有以下幾個(gè)任務(wù) :
· 預配置 OBKey+芯片操作許可.
· 生成根證書(shū)
· 為 OEM 開(kāi)發(fā)團隊生成一級證書(shū)
· 為 OEM 開(kāi)發(fā)團隊生成中間證書(shū)
3.2.1. 預配置 OBKey+芯片操作許可
此過(guò)程與《STM32H5 DA 之初體驗(帶 TrustZone)》的 3.2 節+3.4 節完全一致。這里不再贅 述。
3.2.2. 生成根證書(shū)
此過(guò)程與《STM32H5 DA 之初體驗(帶 TrustZone)》的 3.3 節完全一致。這里不再贅述。
3.2.3. 測試根證書(shū)的有效性
此過(guò)程與《STM32H5 DA 之初體驗(帶 TrustZone)》的第 4 章完全一致。這里不再贅述。
3.2.4. 為 OEM 開(kāi)發(fā)團隊生成一級證書(shū)
為 OEM 開(kāi)發(fā)團隊生成一級證書(shū)首先得拿到 OEM 開(kāi)發(fā)團隊的公鑰. 關(guān)于 OEM 開(kāi)發(fā)團隊如何 生成自己的公鑰私鑰對, 請參考 3.3.1 節.
如上 圖所示, 在 Certificate Role 處選擇 LEAF, 在 Issuer Private Key 處輸入根密鑰:
C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO- H563ZI/ROT_Provisioning/DA/Keys/key_1_root.pem, 用它來(lái)給證書(shū)簽名.
在 Leaf Public Key 處輸入 OEM 開(kāi)發(fā)團隊的一級公鑰: C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO-
H563ZI/ROT_Provisioning/DA/Keys/key_2_intermediate_pub.pem
在 Settings 下設置開(kāi)放給 OEM 開(kāi)發(fā)團隊的操作許可, 因為 OEM 開(kāi)發(fā)團隊僅僅形式發(fā) NS
工程, 所以這里開(kāi)放完全回退+半回退, +NS Debug 權限.
然后在右側 Input certificate for chaining 處輸入根證書(shū): C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO-
H563ZI/ROT_Provisioning/DA/Certificates/cert_root.b64
在 Certificate file 出輸入需要生成的證書(shū)路徑及文件名: C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO- H563ZI/ROT_Provisioning/DA/Certificates/level1_cert_leaf.b64
最后點(diǎn)擊 Generate Certificate 按鍵生成一級證書(shū):
其中 level1_cert_leaf_chain.b64 為一級證書(shū)文件, 可發(fā)給 OEM 開(kāi)發(fā)團隊用作 NS 工程調試和
完全回退+半回退.
3.2.5. 為 OEM 開(kāi)發(fā)團隊生成中間證書(shū)
安全開(kāi)發(fā)團隊還需要給 OEM 開(kāi)發(fā)團隊生成中間證書(shū), 此證書(shū)是專(zhuān)門(mén)用來(lái)給下一級授權的, 即 生成二級證書(shū)用的.
如上圖所示, 在 Certificate Role 處選擇 INTERMEDIATE, 在 Issuer Private Key 處, 輸出 根密鑰 : C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO- H563ZI/ROT_Provisioning/DA/Keys/key_1_root.pem, 用它給證書(shū)簽名. 在 Intermediate Public Key 處, 輸入 OEM 開(kāi)發(fā)團隊的公鑰 : C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO-
H563ZI/ROT_Provisioning/DA/Keys/key_2_intermediate_pub.pem
在下方 Settings 處, 我們僅僅選擇 Full, 即僅僅開(kāi)放完全回退權限. 這是由于此中間證書(shū)只 是給 OEM 開(kāi)發(fā)團隊生成下一級證書(shū), 即給現場(chǎng)技術(shù)支持團隊用的, 它僅僅需要完全回退權 限即可.
在右側 Input certificate for chaining 處輸入根證書(shū) :
C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO-
H563ZI/ROT_Provisioning/DA/Certificates/cert_root.b64
在 Certificate file 處輸入生成的證書(shū)的路徑及文件名 : C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO- H563ZI/ROT_Provisioning/DA/Certificates/level1_cert_intermediate.b64
最后點(diǎn)擊 Generate Certificate 按鍵生成中間證書(shū) :
其中 level1_cert_intermediate_chain.b64 可發(fā)給 OEM 開(kāi)發(fā)團隊. 給他們生成下級證書(shū)用.
3.3. OEM 開(kāi)發(fā)團隊
OEM 開(kāi)發(fā)團隊主要是開(kāi)發(fā) NS 工程的團隊, 因此, 需要調試 NS 工程, 需要能回退到 TZ- Closed 的權限, 當然完全回退權限也需要. 這些權限應該包含在其對應的一級證書(shū)內. 在生成 OEM 開(kāi)發(fā)團隊自己的證書(shū)之前, OEM 開(kāi)發(fā)團隊首先得擁有一套自己的公鑰私鑰對.
3.3.1. 生成自己的公鑰私鑰對
如上圖所示, 用 TPC 打開(kāi) xml 文件 : C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO-
H563ZI/ROT_Provisioning/DA/Config/DA_Config.xml
然后在 Debug Authentication root key 下, 點(diǎn)擊 open, 打開(kāi) C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO- H563ZIROT_ProvisioningDAKeyskey_2_intermediate.pem 這個(gè)一級密鑰文件. 然后點(diǎn)擊 regenerate 按鍵, 重新生成一個(gè)密鑰對:
這個(gè)密鑰就是 OEM 開(kāi)發(fā)團隊自己的密鑰. 它的公鑰可以發(fā)給安全開(kāi)發(fā)團隊, 用來(lái)生成一級證 書(shū)和中間證書(shū)(請參考 3.2.4, 3.2.5 節).
當然, 你也可以使用其它第三方工具, 比如 openssl 來(lái)生成自己的公鑰私鑰對, 最終以 pem 文 件格式存在.
3.3.2. 測試一級證書(shū)的有效性
我們可以先在 provisioning 狀態(tài)下測試下完全回退.
如上圖所示, 輸入 OEM 自己的私鑰: C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO-
H563ZIROT_ProvisioningDAKeyskey_2_intermediate.pem
同時(shí)輸入一級證書(shū): C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO-
H563ZIROT_ProvisioningDACertificateslevel1_cert_leaf_chain.b64
選擇 Full Regression, 然后點(diǎn)擊 Execute 按鍵…
結果為可以完全回退成功.
接下來(lái)我們再測試下此證書(shū)是否可以調試 NS 工程…
在 Open 狀態(tài)下, 我們燒一個(gè)測試程序: C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO-
H563ZIExamplesGPIOGPIO_IOToggle_TrustZone
并修改芯片的選項字節 TZEN=0xB4, SECWM2_STRT=0x7f, SECWM2_END=0x0
燒錄完固件后, 并確保此程序能正常運行(兩個(gè) LED 燈來(lái)回閃爍)的情況下, 再切換到 provisioning 狀態(tài)下做 DA 預配置, 完了之后再切換到 closed 狀態(tài)下. 然后我們再?lài)L試使用 STM32CubeIDE 調試 NS 工程.
修改 NS 工程的調試配置…
如上圖所示, 在 Key path 處輸入 OEM 開(kāi)發(fā)團隊的私鑰:
C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO-
H563ZIROT_ProvisioningDAKeyskey_2_intermediate.pem
在 Certificate path 處輸入一級證書(shū): C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO- H563ZIROT_ProvisioningDACertificateslevel1_cert_leaf_chain.b64
Permissions 處選擇 Debug Non Secure L1 Reset behavior 處選擇 None.
然后點(diǎn)擊 Debug 按鍵.. 之后在調試工具欄中點(diǎn)擊暫停
如上圖所示, 程序在 NS 工程的 while(1);已經(jīng)暫停了下來(lái), 這說(shuō)明使用一級證書(shū)調試 NS 工程 是 OK 的.
接下來(lái)我們嘗試使用一級證書(shū)進(jìn)行局部回退.
如上圖所示,進(jìn) STLink 斷開(kāi)的情況下,點(diǎn)擊 Discovery 后, 輸入 OEM 開(kāi)發(fā)團隊的私鑰: C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO-
H563ZIROT_ProvisioningDAKeyskey_2_intermediate.pem
在下面輸入框內輸入一級證書(shū): C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO-
H563ZIROT_ProvisioningDACertificateslevel1_cert_leaf_chain.b64
然后點(diǎn)擊 Continue 按鍵…
如上圖所示, 選擇 Partial Regression, 然后點(diǎn)擊 Execute 按鍵…
如上圖所示, 執行成功, 并且 STLink 仍然保持連接, 此時(shí)查看狀態(tài)為 TZ-Closed 狀態(tài):
這表明使用此一級證書(shū)進(jìn)行半回退也是 OK 的.
3.3.3. 給現場(chǎng)技術(shù)支持團隊生成二級證書(shū)
在給現場(chǎng)技術(shù)支持團隊生成二級證書(shū)之前, 需要先拿到其公鑰(見(jiàn) 3.4.1 節). 然后使 TPC 生成 二級證書(shū):
如上圖所示, 在 Certificate Role 處選擇 LEAF, 在 Issuer Private Key 處輸入 OEM 開(kāi)發(fā)團隊
的私鑰: C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO-
H563ZI/ROT_Provisioning/DA/Keys/key_2_intermediate.pem
在 Leaf Poblic Key 處輸入現場(chǎng)技術(shù)支持團隊的公鑰: C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO-
H563ZI/ROT_Provisioning/DA/Keys/key_3_leaf_pub.pem
然后在 Settings 處選擇給現場(chǎng)技術(shù)支持團隊開(kāi)放的權限. 需要注意地是, 由于中間證書(shū)都只有 Full Regression 的權限, 這里也就只能授權這個(gè)權限, 其它權限即便在這里點(diǎn)開(kāi)了, 也不會(huì )有實(shí)際 效果.
然后在右側 Input certificate for chaining 處輸入中間證書(shū): C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO-
H563ZI/ROT_Provisioning/DA/Certificates/level1_cert_intermediate_chain.b64
接著(zhù)在 Certificate file 處輸入需要導出的證書(shū)目錄以及文件名: C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO-
H563ZI/ROT_Provisioning/DA/Certificates/level2_cert_leaf.b64
最后點(diǎn)擊 Generate Certificate 按鍵生成二級證書(shū):
如上圖所示, 生成的 level2_cert_leaf_chain.b64 就是二級證書(shū), 就是需要發(fā)給現場(chǎng)技術(shù)支持 團隊用的.
3.4. 現場(chǎng)技術(shù)支持團隊
現場(chǎng)技術(shù)支持團隊是負責現場(chǎng)給客戶(hù)進(jìn)行技術(shù)支持的, 往往需要將芯片完全回退, 以便檢查硬 件是否出現問(wèn)題. 因此, 需要完全回退的權限. 其證書(shū)僅僅需要此權限即可. 在生成對應的二級證書(shū) 之前, 需要先擁有一對自己的公鑰私鑰對.
3.4.1. 生成自己的公鑰私鑰對
與 3.3.1 節類(lèi)似, 使用 TPC 自己的公鑰私鑰對.
如上圖所示, 在 XML file 處輸入
C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO-
H563ZI/ROT_Provisioning/DA/Config/DA_Config.xml
在 Debug Authentication root key 處, 點(diǎn)擊 open 選擇
C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO-
H563ZIROT_ProvisioningDAKeyskey_3_leaf.pem
最后點(diǎn)擊 Regenerate 按鍵生成密鑰對:
如上圖, 其中的 key_3_leaf_pub.pem 文件為公鑰, 需要發(fā)給 OEM 開(kāi)發(fā)團隊用來(lái)生成二級證書(shū)(見(jiàn) 3.3.3 節).
3.4.2. 測試二級證書(shū)的有效性
之前我們已經(jīng)將 NUCLEO-板回退到 TZ-Closed 狀態(tài), 可直接在此狀態(tài)下使用二級證書(shū)進(jìn)行完 全回退, 以驗證二級證書(shū)的有效性.
如上圖所示, 在 STM32CubeProgrammer 中, 在 ST-Link 斷開(kāi)的情況下, 點(diǎn)擊 Discovery 按 鍵, 然后在 key File path 處輸入現場(chǎng)技術(shù)支持團隊自己的私鑰: C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO-
H563ZIROT_ProvisioningDAKeyskey_3_leaf.pem
在 Certificate File Path 處輸入二級證書(shū): C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO-
H563ZIROT_ProvisioningDACertificateslevel2_cert_leaf_chain.b64
然后點(diǎn)擊 Continue 按鍵…
然后選擇 Full Regression, 最后點(diǎn)擊 Execute 按鍵…
最終完全回退成功.
這就驗證了此二級證書(shū)的有效性.
至此, 根證書(shū), 一級證書(shū), 二級證書(shū)均已驗證其有效性.
4. 其它問(wèn)題
在生成證書(shū)鏈過(guò)程中, 有涉及到中間證書(shū), 我們用它來(lái)生成二級證書(shū), 原則上中間證書(shū)只能用來(lái) 生成二級證書(shū), 其本身并不會(huì )直接使用, 那么這里有一個(gè)問(wèn)題, 直接使用中間證書(shū)能有效嗎? 我們 不妨來(lái)測試下.
4.1. 測試直接使用中間證書(shū)
在芯片 provisioning 狀態(tài)下, 我們給芯片做好預配置后, 可直接使用中間證書(shū)嘗試完全回退.
如上圖, 在 Key File Path 處使用 OEM 開(kāi)發(fā)團隊的私鑰:
C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO-
H563ZIROT_ProvisioningDAKeyskey_2_intermediate.pem
然后證書(shū)處輸入中間證書(shū): C:workspaceSTM32Cube_FW_H5_V1.1.0ProjectsNUCLEO-
H563ZIROT_ProvisioningDACertificateslevel1_cert_intermediate_chain.b64
然后點(diǎn)擊 Continue 按鍵…
然后選擇 Full Regression, 最后點(diǎn)擊 Execute 按鍵…
之前在生成中間證書(shū)時(shí), 是給中間證書(shū)授權完全 回退的, 接下來(lái)看看實(shí)際測試結果…
如上圖所示, 實(shí)際測試結果為失敗. 由此可見(jiàn), 中間證書(shū)確實(shí)是不能直接拿來(lái)使用的.
4.2. 測試使用一級證書(shū)生成二級證書(shū)的有效性
之前我們是使用了中間證書(shū)來(lái)生成二級證書(shū), 如果我們直接使用一級證書(shū)生成二級證書(shū), 會(huì )怎 樣? 這個(gè)二級證書(shū)是否仍然有效? 我們接著(zhù)來(lái)測試下.
如上圖所示, 在使用 TPC 生成二級證書(shū)過(guò)程中, 在右邊的 Certificate file 處輸入一級證書(shū)
C:/workspace/STM32Cube_FW_H5_V1.1.0/Projects/NUCLEO-
H563ZI/ROT_Provisioning/DA/Certificates/level1_cert_leaf_chain.b64
時(shí), 會(huì )直接彈出錯誤提示框, 且右下角 Generate Certificate 按鍵也是灰色的, TPC 不允許這 么操作. 實(shí)測通過(guò) TPC 是無(wú)法生成這種證書(shū)的.
更多相關(guān)信息請見(jiàn):DA 證書(shū)鏈之初體驗 https://share.eepw.com.cn/share/download/id/391492
評論