使用 X.509 憑證驗證身分識別

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

X.509 CA 憑證是可簽署其他憑證的數位憑證。 如果數位憑證符合 IETF RFC 5280 標準規定的憑證格式標準,則會將其視為 X.509 憑證。 憑證授權單位單位(CA)表示其持有者可以簽署其他憑證。

本文說明如何使用 X.509 憑證頒發機構單位 (CA) 憑證來驗證連線到IoT 中樞的裝置,其中包括下列步驟:

  • 如何取得 X.509 CA 憑證
  • 如何將 X.509 CA 憑證註冊到IoT 中樞
  • 如何使用 X.509 CA 憑證簽署裝置
  • 使用 X.509 CA 簽署的裝置如何進行驗證

重要

對於使用 X.509 憑證頒發機構單位 (CA) 驗證的裝置,下列功能尚未正式推出,且 必須啟用 預覽模式:

  • HTTPS、透過 WebSocket 的 MQTT,以及透過 WebSocket 通訊協定的 AMQP。
  • 檔案上傳(所有通訊協定)。

這些功能通常用於使用 X.509 指紋驗證的裝置。 若要深入瞭解使用 IoT 中樞 進行 X.509 驗證,請參閱 支援的 X.509 憑證

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

驗證和授權

驗證 是證明您是誰的程式。 驗證會驗證使用者或裝置的身分識別,以IoT 中樞。 它有時會縮短為 AuthN 授權 是確認IoT 中樞上已驗證使用者或裝置許可權的程式。 它會指定您可以存取哪些資源和命令,以及您可以使用這些資源和命令執行的動作。 授權有時會縮短為 AuthZ

本文說明使用 X.509 憑證 進行驗證。 您可以使用任何 X.509 憑證,將憑證指紋或憑證授權單位單位 (CA) 上傳至Azure IoT 中樞,以使用 IoT 中樞 驗證裝置。

X.509 憑證用於IoT 中樞中的驗證,而不是授權。 與 Microsoft Entra 識別碼和共用存取簽章不同,您無法使用 X.509 憑證自訂許可權。

強制執行 X.509 驗證

如需其他安全性,可以將 IoT 中樞設定為不允許裝置和模組的 SAS 驗證,並將 X.509 保留為唯一接受的驗證選項。 此功能目前無法在 Azure 入口網站中使用。 若要設定、在IoT 中樞資源屬性上設定 disableDeviceSASdisableModuleSAStrue

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

X.509 CA 憑證驗證的優點

X.509 憑證頒發機構單位 (CA) 驗證是使用大幅簡化供應鏈中裝置身分識別建立和生命週期管理的方法,來驗證裝置以IoT 中樞。

X.509 CA 驗證的辨別屬性是 CA 憑證與其下游裝置具有的一對多關聯性。 此關聯性可藉由註冊 X.509 CA 憑證一次,將任意數目的裝置註冊到 IoT 中樞。 否則,必須先預先註冊每個裝置的唯一憑證,裝置才能連線。 此一對多關聯性也會簡化裝置憑證生命週期管理作業。

X.509 CA 驗證的另一個重要屬性是簡化供應鏈物流。 裝置的安全驗證要求每個裝置都會保存唯一的秘密,例如金鑰作為信任的基礎。 在憑證式驗證中,此秘密是私密金鑰。 典型的裝置製造流程牽涉到多個步驟和監管人。 跨多個監管人安全地管理裝置私密金鑰並維持信任是困難且昂貴的。 使用憑證授權單位單位可藉由將每個監管人簽署至密碼編譯信任鏈結,而不是使用裝置私密金鑰來解決此問題。 每個監管人都會在其製造流程的個別步驟簽署裝置。 整體結果是使用密碼編譯信任鏈結,具有內建責任的最佳供應鏈。

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

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

取得 X.509 CA 憑證

X.509 CA 憑證是每個裝置的憑證鏈結頂端。 視您想要使用的方式而定,您可以購買或建立一個。

針對生產環境,建議您從專業證書服務提供者購買 X.509 CA 憑證。 購買 CA 憑證的優點是根 CA 作為受信任的協力廠商,以證明裝置的合法性。 如果您的裝置是開放 IoT 網路的一部分,且其與協力廠商產品或服務互動,請考慮此選項。

您也可以建立自我簽署的 X.509 CA 憑證以供測試之用。 如需建立測試憑證的詳細資訊,請參閱 建立和上傳用於測試 的憑證。

注意

不建議針對生產環境使用自我簽署憑證。

無論您如何取得 X.509 CA 憑證,請務必保留其對應的私密金鑰秘密並一律受到保護。 在 X.509 CA 驗證中建置信任時,必須採取此預防措施。

將裝置登入信任的憑證鏈結

X.509 CA 憑證的擁有者可以透過密碼編譯方式簽署中繼 CA,進而簽署另一個中繼 CA 等等,直到最後一個中繼 CA 簽署裝置憑證來終止此程式為止。 結果是一個串連的憑證鏈結,稱為 信任 的憑證鏈結。 此信任委派很重要,因為它會建立密碼編譯變數的監管鏈結,並避免共用簽署金鑰。

Diagram that shows the certificates in a chain of trust.

裝置憑證(也稱為分葉憑證)必須將其通用名稱 (CN) 設定為 在 Azure IoT 中樞 中註冊 IoT 裝置時所使用的裝置 識別碼 ( CN=deviceId )。 驗證需要此設定。

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

瞭解如何 在簽署裝置時建立憑證鏈結

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

將 X.509 CA 憑證註冊至 IoT 中樞,以在註冊和連線期間使用它來驗證您的裝置。 註冊 X.509 CA 憑證是兩個步驟的程式,包括上傳憑證檔案,然後建立擁有權證明。

上傳程式需要上傳包含您憑證的檔案。 此檔案絕不應包含任何私密金鑰。

擁有權證明步驟涉及您與IoT 中樞之間的密碼編譯挑戰和回應程式。 假設數位憑證內容是公用的,因此容易受到竊聽的影響,IoT 中樞必須確認您確實擁有 CA 憑證。 您可以選擇自動或手動驗證擁有權。 針對手動驗證,Azure IoT 中樞會產生隨機挑戰,以 CA 憑證的對應私密金鑰進行簽署。 如果您保留私密金鑰秘密並受到建議保護,則只有您擁有完成此步驟的知識。 私密金鑰的秘密是此方法的信任來源。 簽署挑戰之後,您可以上傳包含結果的檔案,以手動驗證憑證。

瞭解如何 註冊 CA 憑證

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

每個 IoT 中樞都有一個身分識別登錄,可儲存允許連線的裝置和模組相關資訊。 在裝置或模組可以連線之前,IoT 中樞的身分識別登錄中必須有該裝置或模組的專案。 裝置或模組會根據儲存在身分識別登錄中的認證,向 IoT 中樞進行驗證。

註冊 X.509 CA 憑證並登入憑證信任鏈結的裝置時,最後一個步驟是裝置連線時進行裝置驗證。 當 X.509 CA 簽署的裝置連線時,它會上傳其憑證鏈結以進行驗證。 鏈結包含所有中繼 CA 和裝置憑證。 使用這項資訊,IoT 中樞在雙步驟程式中驗證裝置。 IoT 中樞以密碼編譯方式驗證憑證鏈結以取得內部一致性,然後對裝置發出擁有證明挑戰。 IoT 中樞從裝置成功宣告擁有權證明回應上的裝置驗證。 此宣告假設裝置的私密金鑰受到保護,且只有裝置可以成功回應此挑戰。 我們建議在裝置中使用硬體安全模組 (HSM) 等安全晶片來保護私密金鑰。

IoT 中樞成功的裝置連線會完成驗證程式,同時也表示適當的設定。 每次裝置連線時,IoT 中樞重新談判 TLS 會話,並驗證裝置的 X.509 憑證。

撤銷裝置憑證

IoT 中樞使用憑證型驗證驗證裝置時,不會檢查憑證授權單位單位的憑證撤銷清單。 如果您有因為憑證可能遭入侵而無法連線到IoT 中樞的裝置,您應該停用身分識別登錄中的裝置。 如需詳細資訊,請參閱 停用或刪除 IoT 中樞 中的裝置。

範例案例

Company-X 會製作專為專業安裝設計的 Smart-X-Widget。 公司 X 外包製造和安裝。 Factory-Y 會製造 Smart-X-Widgets,且技術員-Z 會安裝它們。 Company-X 想要將 Smart-X-Widget 直接從 Factory-Y 運送至 Technical-Z 進行安裝,然後直接連線到公司 X 的 IoT 中樞 實例。 為了做到這一點,公司-X 必須完成一些一次性設定作業,以將 Smart-X-Widget 作為自動連線的質素。 此端對端案例包含下列步驟:

  1. 取得 X.509 CA 憑證

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

  3. 將裝置登入憑證信任鏈結

  4. 連線裝置

這些步驟示範于 教學課程:建立和上傳要測試 的憑證。

取得憑證

公司 X 可以從公用根憑證授權單位購買 X.509 CA 憑證,或透過自我簽署程式建立一個憑證。 任一選項都需要兩個基本步驟:產生公開/私密金鑰組,並將公開金鑰簽署至憑證。

如何完成這些步驟的詳細資料與各種服務提供者不同。

Diagram showing the flow for generating an X.509 CA certificate.

購買憑證

購買 CA 憑證的優點是讓已知的根 CA 充當受信任的協力廠商,以在裝置連線時提供 IoT 裝置的合法性。 如果您的裝置與協力廠商產品或服務互動,請選擇此選項。

若要購買 X.509 CA 憑證,請選擇根憑證服務提供者。 根 CA 提供者將引導您如何建立公開/私密金鑰組,以及如何為其服務產生憑證簽署要求 (CSR)。 CSR 是向憑證授權單位單位申請憑證的正式程式。 此購買的結果是用來作為授權單位憑證的憑證。 假設 X.509 憑證無處不在,憑證可能已正確格式化為 IETF 的 RFC 5280 標準。

建立自我簽署憑證

建立自我簽署 X.509 CA 憑證的程式類似于購買一個憑證,不同之處在于它不包含根憑證授權單位之類的協力廠商封緘者。 在我們的範例中,Company-X 會簽署其授權單位憑證,而不是根憑證授權單位。

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

註冊憑證以IoT 中樞

公司 X 需要向IoT 中樞註冊 X.509 CA,以便在其連線時驗證 Smart-X-Widget。 此一次性程式可讓您驗證和管理任意數目的 Smart-X-Widget 裝置。 CA 憑證與裝置憑證之間的一對多關聯性是使用 X.509 CA 驗證方法的主要優點之一。 替代方式是上傳每個 Smart-X-Widget 裝置的個別憑證指紋,進而增加營運成本。

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

Diagram showing the process flow for registering an X.509 CA certificate.

上傳憑證

X.509 CA 憑證上傳程式就是:將 CA 憑證上傳至IoT 中樞。 IoT 中樞預期檔案中的憑證。

憑證檔案在任何情況下不得包含任何私密金鑰。 公開金鑰基礎結構 (PKI) 標準的最佳作法規定,公司-X 私密金鑰的知識完全位於公司-X 內。

證明擁有

X.509 CA 憑證就像任何數位憑證一樣,是容易受到竊聽的公開資訊。 因此,竊聽程式可能會攔截憑證,並嘗試將其上傳為自己的憑證。 在我們的範例中,IoT 中樞必須確定 CA 憑證 Company-X 上傳確實屬於 Company-X。 它通過挑戰公司X來證明他們通過 擁有證明(PoP)流程 擁有憑證。

針對擁有權證明流程,IoT 中樞會使用其私密金鑰產生由 Company-X 簽署的亂數字。 如果 Company-X 遵循 PKI 最佳做法並保護其私密金鑰,則只有能夠正確回應擁有證明挑戰。 IoT 中樞成功回應擁有權證明挑戰後,繼續註冊 X.509 CA 憑證。

IoT 中樞成功回應擁有證明挑戰,完成 X.509 CA 註冊。

將裝置登入憑證信任鏈結

IoT 需要每個連線裝置的唯一身分識別。 對於憑證型驗證,這些身分識別的格式為憑證。 在我們的範例中,憑證式驗證表示每個 Smart-X-Widget 都必須擁有唯一的裝置憑證。

在每個裝置上提供唯一憑證的有效但效率不佳方式,是預先產生 Smart-X-Widget 的憑證,並信任具有對應私密金鑰的供應鏈合作夥伴。 對於 Company-X,這表示委託 Factory-Y 和 Technician-Z。 此方法隨附必須克服以確保信任的挑戰,如下所示:

  • 除了忽略絕不共用私密金鑰的 PKI 最佳做法之外,必須與供應鏈合作夥伴共用裝置私密金鑰,使得在供應鏈中建立信任的成本很高。 其需要安全會議室等系統來存放裝置私密金鑰,以及定期安全性稽核等程式。 這兩者都會在供應鏈中增加成本。

  • 安全地考慮供應鏈中的裝置,並在部署中管理裝置,成為從裝置唯一憑證(和私密金鑰)產生到裝置淘汰的每個金鑰組裝置配對的一對一工作。 這可排除裝置的群組管理,除非以某種方式明確內建群組的概念。 因此,安全會計和裝置生命週期管理會成為沉重的作業負擔。

X.509 CA 憑證驗證使用憑證鏈結,為這些挑戰提供優雅的解決方案。 憑證鏈結會產生 CA 簽署中繼 CA,接著簽署另一個中繼 CA 等等,直到最終中繼 CA 簽署裝置為止。 在我們的範例中,Company-X 會簽署 Factory-Y,然後簽署技術員 Z,最後簽署 Smart-X-Widget。

Diagram showing an example of a certificate chain hierarchy.

鏈結中的這個憑證串聯代表授權單位的邏輯交接。 許多供應鏈都會遵循此邏輯交接,讓每個中繼 CA 在接收所有上游 CA 憑證時登入鏈結,而最後一個中繼 CA 最終會簽署每個裝置,並將鏈結中的所有授權憑證插入裝置。 當具有工廠階層的承包制造公司委託特定工廠進行製造時,這種交接很常見。 雖然階層可能深度為數個層級(例如,依地理位置/產品類型/製造線),但最後只有工廠可以與裝置互動,但鏈結會從階層頂端維護。

替代鏈結可能會有不同的中繼 CA 與裝置互動,在此情況下,與裝置互動的 CA 會在該時間點插入憑證鏈結內容。 在只有部分 CA 與裝置有實體互動的情況下,也可以使用混合式模型。

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

Diagram showing the certificate chain of trust from the certificates of one company to the certificates of another company.

  1. 公司 X 絕不會實際與任何 Smart-X-Widget 互動。 它會簽署 Factory-Y 的中繼 CA 憑證,以起始信任的憑證鏈結。
  2. Factory-Y 現在有自己的中繼 CA 憑證,以及來自 Company-X 的簽章。 它會將這些專案的複本傳遞至裝置。 它也會使用其中繼 CA 憑證來簽署技術員 Z 的中繼 CA 憑證和 Smart-X-Widget 裝置憑證。
  3. 技術員 Z 現在有自己的中繼 CA 憑證和 Factory-Y 的簽章。 它會將這些專案的複本傳遞至裝置。 它也會使用其中繼 CA 憑證來簽署 Smart-X-Widget 裝置憑證。
  4. 每個 Smart-X-Widget 裝置現在都有自己的唯一裝置憑證,以及它在整個供應鏈中與其互動之每個中繼 CA 憑證的公開金鑰和簽章複本。 這些憑證和簽章可以追溯回原始的 Company-X 根目錄。

驗證的 CA 方法會將安全責任注入到裝置製造供應鏈中。 由於憑證鏈結程式,鏈結中每個成員的動作都會以密碼編譯方式記錄和驗證。

此程式依賴假設唯一的裝置公開/私密金鑰組是獨立建立,且私密金鑰一律在裝置內受到保護。 幸運的是,安全晶片以硬體安全模組(HSM)的形式存在,能夠內部產生金鑰並保護私密金鑰。 公司 X 只需要將一個這類安全晶片新增至 Smart-X-Widget 的元件材料帳單中。

驗證裝置

將最上層 CA 憑證註冊到IoT 中樞且裝置具有其唯一憑證之後,他們該如何連線? 將 X.509 CA 憑證註冊為一次IoT 中樞,如何從第一次連線並驗證數百萬部裝置? 透過我們先前註冊 X.509 CA 憑證時所遇到的相同憑證上傳和擁有證明流程。

針對 X.509 CA 驗證製造的裝置配備唯一的裝置憑證,以及各自製造供應鏈中的憑證鏈結。 裝置連線,即使是第一次,也會在雙步驟程式中發生:憑證鏈結上傳和擁有權證明。

在憑證鏈結上傳期間,裝置會將唯一的憑證和憑證鏈結上傳至IoT 中樞。 使用預先註冊的 X.509 CA 憑證,IoT 中樞會驗證上傳的憑證鏈結在內部一致,且鏈結是由 X.509 CA 憑證的有效擁有者所產生。 如同 X.509 CA 註冊程式,IoT 中樞使用擁有證明挑戰回應程式來確認鏈結,因此裝置憑證屬於上傳該憑證的裝置。 成功的回應會觸發IoT 中樞接受裝置為正宗,並授與其連線。

在我們的範例中,每個 Smart-X-Widget 都會將其裝置唯一憑證連同 Factory-Y 和 Technician-Z X.509 CA 憑證一起上傳,然後回應IoT 中樞的擁有證明挑戰。

Diagram showing the flow for validating a device certificate.

信任的基礎在於保護私密金鑰,包括裝置私密金鑰。 因此,我們不能以硬體安全模組(HSM)的形式強調安全晶片的重要性,以保護裝置私密金鑰,而從不共用任何私密金鑰的整體最佳做法,就像一家工廠委託另一個私密金鑰一樣。

下一步

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

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

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