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