共用方式為


使用第三方 X.509 憑證驗證身份

IoT 中樞會使用 X.509 憑證來驗證裝置。 X.509 驗證允許建立 IoT 裝置驗證作為傳輸層安全性 (TLS) 標準連線的一部份。

本文說明如何使用第三方管理的 X.509 CA 憑證來驗證連接到物聯網集線器的裝置。

驗證和授權

身份驗證 是證明您是您所說的人的過程。 驗證會向 Azure IoT 中樞確認使用者或裝置的身分識別。 有時會簡稱為 AuthN (驗證)。

授權是在 Azure IoT 中樞上確認已驗證使用者或裝置權限的流程。 授權指定您可以存取哪些資源和命令,以及您可以使用這些資源和命令執行的動作。 授權 (Authorization) 有時會被簡稱為 AuthZ

X.509 憑證僅用於物聯網中樞的認證,不用於授權。 與 Microsoft Entra ID共享存取簽章不同,X.509 憑證無法自訂權限。

Microsoft 與第三方 PKI 的比較

公鑰基礎建設(PKI)利用數位憑證來驗證並加密裝置與服務之間的資料。 PKI 憑證保護 VPN、Wi-Fi、電子郵件、網頁及裝置識別等情境。 管理 PKI 憑證具有挑戰性、成本高昂且複雜,尤其對於擁有眾多裝置與使用者的組織而言。

IoT Hub 支援兩種 PKI 供應商用於 X.509 憑證認證:

PKI 供應商 必須整合 Azure Device Registry(ADR)是必需的 需要裝置配置服務(DPS)
Microsoft 管理的 PKI 否。 直接在 Azure 裝置登錄檔(ADR)中設定憑證授權中心。 Yes Yes
第三方公鑰基礎設施(DigiCert、GlobalSign 等) 是的。 需要手動整合。

本文聚焦於第三方PKI供應商。 如果你想使用 Microsoft 管理的 PKI 搭配 X.509 憑證,請參閱「什麼是憑證管理?」。

憑證認證的類型

X.509 憑證授權中心(CA)憑證是一種數位憑證,可以簽署其他憑證。 如果某個數位憑證符合 IETF RFC 5280 標準所規定的憑證格式化標準,即會被視為 X.509 憑證。

X.509 CA 功能可讓您使用憑證授權單位 (CA) 向 IoT 中樞進行裝置驗證。 其簡化了裝置製造期間的初始裝置註冊流程及供應鏈物流。

你可以使用任何 X.509 憑證,透過上傳憑證拇指或憑證授權中心(CA)到 IoT Hub,來驗證裝置。

  • X.509 CA 簽名 - 此選項建議用於生產情境,本文聚焦於此。

    如果你的裝置有 CA 簽署的 X.509 憑證,那麼你在註冊裝置前,先在簽署鏈中將根憑證或中介憑證上傳到 IoT Hub。 該裝置擁有一份 X.509 憑證,憑證信任鏈中包含已驗證的 X.509 CA。 當裝置連接時,會顯示完整的憑證鏈,物聯網樞紐也能驗證,因為它知道 X.509 CA。 多個裝置可以對同一已驗證的 X.509 CA 進行驗證。

  • X.509 自簽

    如果你的裝置有自簽的 X.509 憑證,那麼你會給 IoT Hub 一個憑證版本用於認證。 註冊裝置時會上傳憑證「指紋」,這是裝置的 X.509 憑證的雜湊。 當裝置連接時,會顯示其憑證,物聯網中樞就能根據它已知的雜湊值驗證憑證。

強制執行 X.509 驗證

為了加強安全性,物聯網集線可設定為不允許裝置與模組進行 SAS 認證,因此 X.509 成為唯一可接受的認證選項。 目前,此功能無法在 Azure 入口網站中使用。 若要設定,請將 IoT 中樞資源屬性上的 disableDeviceSASdisableModuleSAS 設定為 true

az resource update -n <iothubName> -g <resourceGroupName> --resource-type Microsoft.Devices/IotHubs --set properties.disableDeviceSAS=true properties.disableModuleSAS=true

X.509 CA 憑證驗證的優點

IoT Hub 需要為每個連接的裝置擁有獨特的身份。 對於憑證式驗證,這些身分識別會採用憑證形式。

一種有效但效率不高的提供唯一憑證的方法,是預先產生憑證並將相應的私鑰交給所有供應鏈夥伴。 這個方法伴隨著必須克服的挑戰就是確保信任,詳情如下:

  • 不僅必須與供應鏈夥伴共用裝置的私密金鑰,還會忽視絕不共用私密金鑰的 PKI 最佳做法,使得在供應鏈建立信任的成本變得昂貴。 這需要系統 (如用來存放裝置私密金鑰的安全室) 和程序 (如定期的安全性稽核)。 這兩者都會讓供應鏈的成本增加。

  • 安全計量供應鏈裝置,接著在部署中透過設備退役管理這些裝置,變成針對每個金鑰與設備配對的一對一工作。 這種關係排除了裝置的群組管理,除非群組的概念以某種方式明確地內建於流程中。 因此,嚴密的計算和裝置生命週期管理會成為沈重的作業負擔。

X.509 CA 憑證驗證會透過使用憑證鏈結,來提供可應對這些挑戰的卓越解決方案。 憑證鏈結的形成,是由 CA 簽署中繼 CA,中繼 CA 再簽署其他中繼 CA,如此不斷循環,直到最終的中繼 CA 簽署裝置為止。 憑證鏈在 CA 憑證與其下游裝置之間建立一對多的關係。 這種關係允許你透過註冊一次 X.509 CA 憑證,將任意數量的裝置註冊到 IoT Hub。

X.509 CA 認證也簡化了供應鏈物流。 典型的裝置製造流程牽涉到多個步驟和保管者。 透過使用憑證授權中心,你可以將每個保管人簽入一條加密的信任鏈,而不必將裝置私鑰交給他們。 每位保管者以其個別的製造流程步驟簽署裝置。 最終,您會因為使用以密碼編譯的信任鏈結,藉由內建責任制度而擁有最佳的供應鏈。

當裝置保護其唯一的私密金鑰時,此程序便會產生最大安全性。 為此,建議您使用能夠在內部產生私密金鑰的硬體安全模組 (HSM)。

Azure IoT 中樞裝置佈建服務 (DPS) 可讓您輕鬆地將裝置群組佈建至中樞。 如需詳細資訊,請參閱教學課程:使用註冊群組佈建多個 x.509 裝置

X.509 憑證流程

本節說明如何使用 X.509 CA 憑證來驗證連接至 IoT Hub 的裝置,包含以下步驟:

  • 取得X.509 CA證書。
  • 使用 X.509 CA 憑證的簽章裝置。
  • 將 X.509 CA 憑證註冊到 IoT Hub。
  • 驗證以 X.509 CA 簽署的裝置。
  • 如果裝置憑證被入侵,請撤銷。

取得 X.509 CA 憑證

X.509 CA 憑證位於您每個裝置的憑證鏈結頂端。 你可以根據你打算如何使用它來購買或創建一個。

針對實際執行環境,建議您向專業憑證服務提供者購買 X.509 CA 憑證。

你也可以建立自簽的 X.509 CA 憑證用於測試。 如需建立憑證以供測試的詳細資訊,請參閱建立及上傳用於測試的憑證。 我們不建議在生產環境中使用自簽憑證。

無論 X.509 CA 憑證取得方式為何,請確保一律會將對應的私密金鑰妥善保密及保護。

購買憑證

購買 CA 憑證的好處在於,有知名的根 CA 可作為信任的第三方來擔保 IoT 裝置在連線時的合法性。 如果您的裝置屬於開放式物聯網網路,且能與第三方產品或服務互動,請選擇此選項。

若要購買 X.509 CA 憑證,請選擇根憑證服務提供者。 根憑證憑證授權提供者會指導你如何建立公私密金鑰配對,以及如何為他們的服務產生憑證簽署請求(CSR)。 CSR 是向憑證授權單位申請憑證的正式程序。 經過這次的購買,便可獲得用來作為授權單位憑證的憑證。 由於 X.509 憑證非常普遍,此憑證可能已正確格式化為 IETF 的 RFC 5280 標準。

建立自我簽署憑證

建立自我簽署 X.509 CA 憑證的程序與購買程序類似,差別只在於涉及第三方簽署者,例如根憑證授權單位。

您可以選擇此選項來進行測試,直到準備好購買授權單位憑證。 如果您的裝置不會連線到 IoT 中樞以外的任何第三方服務,您也可以在生產環境中使用自我簽署的 X.509 CA 憑證。

將裝置簽署至憑證信任鏈結中

X.509 CA 憑證的擁有者可以加密簽署一個中間 CA,而中間 CA 又能再簽署另一個中間 CA,依此類推,直到最後一個 CA 簽署裝置憑證為止。 結果會是串聯的憑證鏈結,稱為「憑證信任鏈結」。 這種信任的委派很重要,因為它建立了保管鏈,避免了簽署鑰匙的共享。

鏈結中的這一連串憑證呈現出授權單位的交接邏輯。 許多供應鏈遵循這種邏輯交接,每個中繼憑證授權單位會簽入鏈結中,同時接收所有上游憑證授權單位憑證。 最後一個中介CA會為每個裝置簽名,並將鏈中所有權威憑證注入該裝置。

顯示信任鏈結中憑證的圖表。

裝置憑證(也稱為葉子憑證)必須將其通用名稱(CN)設定為在 Azure IoT Hub 註冊物聯網裝置時使用的 裝置 IDCN=deviceId)。 需要此設定才能進行驗證。

對於使用 X.509 驗證的模組,模組的憑證一般名稱 (CN) 格式必須如 CN=deviceId/moduleId

了解如何建立憑證鏈結 (會在簽署裝置時完成)。

向 IoT 中樞註冊 X.509 CA 憑證

將你的 X.509 CA 憑證註冊到 IoT Hub,該中心會用它來驗證你的裝置。 X.509 CA 憑證可以驗證任何在其憑證信任鏈中擁有該憑證的裝置。 註冊 X.509 CA 憑證是兩個步驟的程序,其中包括上傳憑證檔案,然後建立擁有權證明。

上傳程序需要上傳一個包含您憑證的檔案。 此檔案一律不應包含任何私密金鑰。

所有權證明步驟涉及您與物聯網中心之間的加密挑戰與回應程序,以驗證您確實擁有該 CA 證書。 您可以選擇自動或手動驗證所有權。 在手動驗證時,IoT Hub 會產生一個隨機挑戰,你用 CA 憑證的私鑰簽署。 如果您依照建議來將私密金鑰妥善保密及保護,則只有您知道如何完成此步驟。 在此方法中,私密金鑰的保密性就是信任的來源。 簽署挑戰後,你上傳包含結果的檔案以完成驗證。

了解如何註冊您的 CA 憑證

驗證以 X.509 CA 憑證簽署的裝置

當你的 X.509 CA 憑證註冊並以信任憑證鏈簽署裝置後,最後一步是裝置認證。 當以 X.509 CA 簽署的裝置連線時,它會上傳其憑證鏈結來進行驗證。 有了此資訊,「IoT 中樞」就會以一個有兩步驟的程序來驗證裝置。

首先,IoT Hub 以密碼學方式驗證憑證鏈的內部一致性。 接著,IoT Hub 會對裝置發出持有權證明挑戰。 「IoT 中樞」會在從裝置獲得成功的所有權證明回應時,宣告裝置驗證。 此宣告會假設裝置的私密金鑰已受保護,而只有裝置能夠成功回應這個查問。 建議您在裝置中使用安全晶片 (例如「硬體安全模組」(HSM)) 來保護私密金鑰。

裝置與「IoT 中樞」的成功連線既會完成驗證程序,同時也象徵設定正確。 每次裝置連線時,IoT 中樞便會重新交涉 TLS 工作階段,並驗證裝置的 X.509 憑證。

撤銷裝置憑證

使用憑證式驗證來驗證裝置時,IoT 中樞不會檢查來自憑證授權單位的憑證撤銷清單。 如果你有裝置因為憑證可能被入侵而必須被封鎖無法連接到 IoT Hub,請在身份登錄檔中停用該裝置。 如需詳細資訊,請參閱停用或刪除裝置

範例案例

Company-X 生產需要專業安裝的 Smart-X-Widget。 Company-X 將製造和安裝外包。 Factory-Y 負責製造 Smart-X-Widget,而 Technician-Z 則負責進行安裝。 Company-X 想要讓 Smart-X-Widget 直接從 Factory-Y 出貨給 Technician-Z 安裝,再將其直接連線到 Company-X 的 IoT 中樞執行個體。 為此,Company-X 需要完成幾項一次性設定操作,讓 Smart-X-Widget 能自動連接。 此端對端案例包含下列步驟:

  1. 取得 X.509 CA 證書

  2. 向 IoT 中樞註冊 X.509 CA 憑證

  3. 將裝置簽署到憑證信任鏈結

  4. 連線裝置

這些步驟會在教學課程:建立和上傳用於測試的憑證中示範。

取得證書

Company-X 可以向公開的根憑證授權單位購買 X.509 CA 憑證,也可以透過自我簽署程序建立一個 X.509 CA 憑證。 任一選項都需要兩個基本步驟:產生公開/私密金鑰組,以及將公開金鑰簽署到憑證中。

如何完成這些步驟的詳細資訊會隨各服務提供者而不同。

顯示產生 X.509 CA 憑證流程的圖表。

向 IoT 中樞註冊憑證

Company-X 必須向 IoT 中樞註冊 X.509 CA,以在 Smart-X-Widget 連線時由 IoT 中樞進行驗證。 這個一次性的程序可讓您驗證及管理任意數目的 Smart-X-Widget 裝置。 CA 憑證與裝置憑證之間的一對多關聯性是使用 X.509 CA 驗證方法的主要優點之一。 替代方法是為每個 Smart-X-Widget 裝置上傳個別的憑證指紋,但這會因此增加營運成本。

註冊 X.509 CA 憑證是兩個步驟的程序:上傳憑證,然後提供擁有權證明。

顯示註冊 X.509 CA 憑證程序流程的圖表。

上傳憑證

X.509 CA 憑證上傳程序就只是將 CA 憑證上傳到 IoT 中樞。 IoT 中樞預期憑證是放在檔案中。

不論是哪種情況,憑證檔案都不得包含任何私密金鑰。 控管公開金鑰基礎結構 (PKI) 之標準所提供的最佳做法會要求 Company-X 的私密金鑰只位於 Company-X 內。

證明擁有

和所有數位憑證一樣,X.509 CA 憑證也是容易遭到竊聽的公開資訊。 因此,竊聽程式可能會攔截憑證,然後嘗試將其當作自己的憑證來上傳。 在我們的範例中,IoT 中樞必須確定 Company-X 所上傳的 CA 憑證確實屬於 Company-X。 其做法是向 Company-X 查問,讓其透過擁有權證明 (PoP) 流程證明其擁有憑證。

在所有權證明流程中,IoT Hub 會產生一個隨機號碼,供 Company-X 使用其私鑰簽名。 如果 Company-X 遵循 PKI 最佳做法並保護其私密金鑰,則只有他們能夠正確地回應擁有權證明查問。 在成功回應擁有權證明查問後,IoT 中樞會繼續註冊 X.509 CA 憑證。

成功回應 IoT 中樞所提出的擁有權證明查問後,就能完成 X.509 CA 註冊。

將裝置簽署到憑證信任鏈結

在我們的範例中,憑證式驗證表示每個 Smart-X-Widget 都必須擁有唯一的裝置憑證。 Company-X 決定不為每個裝置建立個別的憑證/金鑰配對,而是使用 CA 憑證,並為每個裝置建立信任憑證鏈。

在我們的範例中,Company-X 會簽署 Factory-Y,Factory-Y 再簽署 Technician-Z,Technician-Z 最終則簽署 Smart-X-Widget。

顯示憑證鏈結階層範例的圖表。

下圖顯示憑證信任鏈結如何在 Smart-X-Widget 範例中結合在一起。

顯示從某家公司憑證到另一家公司憑證的信任憑證鏈結。

  1. Company-X 永遠不會與任何 Smart-X-Widget 有實際的互動。 它會簽署 Factory-Y 的中繼 CA 憑證來起始憑證信任鏈結。
  2. Factory-Y 現在擁有由X公司簽名的中級CA證書。 它會將這些項目的副本傳給每個裝置。 這也會使用其中繼 CA 憑證來簽署 Technician-Z 的中繼 CA 憑證和 Smart-X-Widget 裝置憑證。
  3. Technician-Z 現在擁有由 Factory-Y 簽名的中介 CA 證書。 它會將這些項目的副本傳給每個裝置。 它也使用中介 CA 憑證來簽署 Smart-X-Widget 裝置憑證。
  4. 每個 Smart-X-Widget 裝置現在都有自己的唯一裝置憑證,以及其與整個供應鏈互動之每個中繼 CA 憑證的公開金鑰和簽章複本。 這些憑證和簽章可以回溯到原始 Company-X 根憑證。

CA 驗證方法會在裝置的製造供應鏈中注入嚴密的責任制度。 由於採用憑證鏈結程序,鏈結中每個成員的動作都會以密碼編譯方式記錄下來並可供驗證。

此程序假設唯一的裝置公開/私密金鑰組是獨立建立,而且私密金鑰在裝置內一律受到保護。 幸運的是,有能夠在內部產生金鑰並保護私密金鑰的安全矽晶片存在,其形式為硬體安全模組 (HSM)。 Company-X 只需要將一個這樣的安全晶片加入到 Smart-X-Widget 的元件用料表即可。

驗證裝置

專為進行 X.509 CA 驗證所製造的裝置,會配備唯一的裝置憑證以及從其個別的製造供應鏈所得到的憑證鏈結。 裝置連線 (即使是第一次) 進行時會經歷兩個步驟的程序:憑證鏈結上傳和擁有權證明。

在我們的例子中,每個 Smart-X-Widget 會上傳其獨特的裝置憑證,以及 Factory-Y 和 Technician-Z X.509 CA 憑證,然後回應 IoT Hub 的擁有權證明挑戰。

利用公司X預先註冊的X.509 CA憑證,IoT Hub驗證上傳的憑證鏈內部一致性,且X.509 CA憑證的有效持有者是該鏈的起源。 如同 X.509 CA 註冊程序,IoT 中樞也會使用擁有權證明查問/回應程序,來確定鏈結以及裝置憑證屬於將其上傳的裝置。 如果回應成功,IoT 中樞就會接受裝置的確可信,並讓其連線。

顯示驗證裝置憑證流程的圖表。

信任基礎仰賴於保護私密金鑰,裝置的私密金鑰也包括在內。 因此,我們必須強調以硬體安全模組(HSM)形式使用安全矽晶片來保護裝置私鑰的重要性,以及絕不分享鏈中任何憑證私鑰的最佳實務。

後續步驟

利用裝置佈建服務,使用註冊群組佈建多個 X.509 裝置

若要深入了解組成 X.509 憑證的欄位,請參閱 X.509 憑證

如果您有根 CA 憑證或附屬 CA 憑證,而且想要將其上傳至 IoT 中樞,您必須確認您擁有該憑證。 如需詳細資訊,請參閱教學課程:建立及上傳用於測試的憑證