X.509 憑證證明

本文說明在裝置布建服務 (DPS) 中使用 X.509 憑證證明布建裝置時所涉及的概念。 本文與讓裝置準備好進行部署的所有角色有關。

X.509 憑證可以儲存在硬體安全性模組 HSM 中。

提示

強烈建議您搭配使用 HSM 與裝置,在生產環境中的裝置上安全地儲存祕密,例如 X.509 憑證。

使用 X.509 憑證布建裝置

使用 X.509 憑證作為證明機制,是調整生產環境規模並簡化裝置佈建的絕佳方式。 X.509 憑證通常會排列在信任的憑證鏈結中,其中鏈結中的每個憑證都是由下一個較高憑證的私密金鑰所簽署,依此類推,並終止於自我簽署根憑證中。 此安排會透過每個中繼憑證,從受信任的證書頒發機構單位 (CA) 所產生的跟證書建立委派的信任鏈結,到裝置上安裝的最終憑證。 若要深入瞭解,請參閱 使用 X.509 CA 憑證的裝置驗證。

憑證鏈結通常代表與裝置相關聯的邏輯或實體階層。 例如,製造商可能會建立下列憑證階層:

  • 自我簽署的根 CA 憑證會開始憑證鏈結。
  • 跟證書會為每個處理站產生唯一的中繼 CA 憑證。
  • 每個處理站的憑證都會為工廠中的每個生產線產生唯一的中繼 CA 憑證。
  • 生產線憑證會針對該生產線上製造的每個裝置產生唯一的裝置(端實體)憑證。

若要深入瞭解,請參閱 IoT產業中 X.509 CA 憑證的概念瞭解。

根憑證

證書 是自我簽署的 X.509 憑證,代表證書頒發機構單位 (CA)。 它是憑證鏈結的終端或信任錨點。 根憑證可由組織自行發行,或從根憑證授權單位購買。 跟證書也可以稱為 跟證書 CA 憑證

中繼憑證

中繼 憑證是由跟證書 簽署的 X.509 憑證(或其鏈結中有跟證書的另一個中繼憑證)簽署,也可以簽署新的憑證。 鏈結中的最後一個中繼憑證會簽署分葉憑證。 中繼憑證也可以稱為 中繼 CA 憑證

中繼憑證會以各種方式使用。 例如,中繼憑證可用來依產品線、客戶購買裝置、公司部門或工廠來分組裝置。

假設 Contoso 是一家擁有自己公鑰基礎結構 (PKI) 的大型公司,其使用名為的 ContosoRootCert跟證書。 Contoso 的每個子公司都有自己的中繼憑證,由 簽署 ContosoRootCert。 每個子公司都會使用其中繼憑證來簽署每個裝置的分葉憑證。 在此案例中,Contoso 可以使用單一 DPS 實例,其中 ContosoRootCert 是已驗證的憑證。 他們可以為每個子公司擁有註冊群組。 如此一來,每個個別子公司就不需要擔心驗證憑證。

終端實體「分葉」憑證

葉憑證實體憑證會識別憑證持有者。 它在其憑證鏈結中有根憑證,以及零或多個中繼憑證。 分葉憑證不會用來簽署任何其他憑證。 它會唯一識別布建服務的裝置,有時稱為 裝置憑證。 在驗證期間,裝置會使用與其憑證相關聯的私鑰來回應服務的擁有證明挑戰。

與個別註冊專案搭配使用的分葉憑證必須將主體通用名稱 (CN) 設定為註冊識別碼。 註冊標識碼會使用 DPS 來識別裝置註冊,而且必須是唯一裝置註冊的 DPS 實例(標識符範圍)。

針對註冊群組,主體通用名稱 (CN) 會設定向 IoT 中樞 註冊的裝置標識碼。 裝置標識碼會顯示在 註冊群組中已驗證裝置的註冊記錄 中。 針對個別註冊,可以在註冊項目中設定裝置標識碼。 如果未在註冊項目中設定,則會使用主體通用名稱 (CN)。

若要深入瞭解,請參閱 驗證使用 X.509 CA 憑證簽署的裝置。

使用 X.509 憑證控制裝置存取

布建服務會公開兩種註冊類型,您可以使用 X.509 證明機制來控制裝置存取:

  • 個別註冊 項目會設定為與特定裝置相關聯的裝置憑證。 這些項目可控制特定裝置的註冊。
  • 註冊群組 專案會與特定的中繼或根 CA 憑證相關聯。 這些項目會控制在其憑證鏈結中具有該中繼或根憑證的所有裝置的註冊。

憑證只能在 DPS 實例的一個註冊專案中指定。

相互 TLS 支援

當 DPS 註冊設定為 X.509 證明時,DPS 支援相互 TLS (mTLS)。

DPS 裝置鏈結需求

當裝置嘗試透過 DPS 使用註冊群組進行註冊時,裝置必須將憑證鏈結從分葉憑證傳送到 已驗證的憑證。 否則,驗證會失敗。

例如,如果只驗證跟證書,並將中繼憑證上傳至註冊群組,裝置應該一路從分葉憑證呈現憑證鏈結到已驗證的跟證書。 此憑證鏈結會包含任何中間的中繼憑證。 如果 DPS 無法周遊憑證鏈結至已驗證的憑證,驗證就會失敗。

例如,假設公司使用下列裝置鏈結來進行裝置。

顯示範例裝置憑證鏈結的圖表。

在此範例中,跟證書會使用 DPS 進行驗證,並在 intermediate2 註冊群組上上傳憑證。

將根憑證和中繼 2 憑證醒目提示為上傳至 DPS 的圖表。

如果裝置在布建期間只傳送下列裝置鏈結,驗證就會失敗。 因為 DPS 無法嘗試驗證,因為假設憑證有效 intermediate1

顯示憑證鏈結失敗驗證的圖表,因為它不會鏈結至根目錄。

如果裝置在布建期間傳送完整的裝置鏈結,則 DPS 可以嘗試驗證裝置。

顯示成功裝置憑證鏈結的圖表。

使用憑證的 DPS 作業順序

當裝置連線到布建服務時,服務會從裝置 (分葉) 憑證開始逐步執行其憑證鏈結,並尋找對應的註冊專案。 它會使用鏈結中找到的第一個項目來判斷是否要布建裝置。 也就是說,如果裝置憑證的個別註冊存在,布建服務就會套用該專案。 如果沒有裝置的個別註冊,服務會尋找對應至第一個中繼憑證的註冊群組。 如果找到一個專案,則會套用該專案;否則,它會在鏈結至根目錄尋找下一個中繼憑證的註冊群組等等。

服務會套用它找到的第一個專案,如此一來:

  • 如果找到的第一個註冊項目已啟用,則服務會佈建裝置。
  • 如果找到的第一個註冊專案已停用,則服務不會布建裝置。
  • 如果找不到裝置憑證鏈結中任何憑證的註冊項目,服務就不會布建裝置。

裝置憑證鏈結中的每個憑證都可以在註冊專案中指定,但只能在 DPS 實例的一個專案中指定。

此機制和憑證鏈結的階層式結構提供強大的彈性,讓您如何控制個別裝置和裝置群組的存取。 例如,假設有五個裝置具有下列憑證鏈結:

  • 裝置 1:跟證書 -> 憑證 A -> 裝置 1 憑證
  • 裝置 2:跟證書 -> 憑證 A -> 裝置 2 憑證
  • 裝置 3:跟證書 -> 憑證 A -> 裝置 3 憑證
  • 裝置 4:跟證書 -> 憑證 B -> 裝置 4 憑證
  • 裝置 5:跟證書 -> 憑證 B -> 裝置 5 憑證

一開始,您可以為根憑證建立單一啟用的群組註冊項目,以啟用所有五個裝置的存取權。 如果憑證 B 稍後遭到入侵,您可以為憑證 B 建立已停用的註冊群組專案,以防止 裝置 4裝置 5 註冊。 如果之後 的裝置 3 仍然遭到入侵,您可以為其憑證建立已停用的個別註冊專案。 這會撤銷裝置 3存取權,但仍允許裝置 1裝置 2 註冊。