使用 X.509 憑證驗證身分識別
IoT 中樞會使用 X.509 憑證來驗證裝置。 X.509 驗證允許在傳輸層安全性 (TLS) 標準連線建立中驗證 IoT 裝置。
X.509 證書頒發機構單位 (CA) 憑證是可簽署其他憑證的數字證書。 如果某個數位憑證符合 IETF RFC 5280 標準所規定的憑證格式化標準,即會被視為 X.509 憑證。
X.509 CA 功能可讓您使用憑證授權單位 (CA) 向 IoT 中樞進行裝置驗證。 這簡化了初始裝置註冊程序,以及裝置製造期間的供應鏈物流。
驗證和授權
驗證是證明您確實是您本人的流程。 驗證會向 Azure IoT 中樞確認使用者或裝置的身分識別。 有時會簡稱為 AuthN (驗證)。
授權是在 Azure IoT 中樞上確認已驗證使用者或裝置權限的流程。 授權指定您可以存取哪些資源和命令,以及您可以使用這些資源和命令執行的動作。 授權 (Authorization) 有時會被簡稱為 AuthZ。
X.509 憑證僅用於 IoT 中樞 中的驗證,而不是授權。 與 Microsoft Entra ID 和共用存取簽章不同,您無法使用 X.509 憑證自訂權限。
憑證驗證的類型
您可以將憑證指紋或證書頒發機構單位 (CA) 上傳至 IoT 中樞,以使用任何 X.509 憑證來驗證具有 IoT 中樞 的裝置。
X.509 CA 簽署 - 此選項建議用於生產案例,且是本文的重點。
如果您的裝置有 CA 簽署的 X.509 憑證,則在註冊裝置之前,請先將簽署鏈結中的根或中繼 CA 憑證上傳至 IoT 中樞。 裝置在其憑證信任鏈結中具有 X.509 憑證和已驗證的 X.509 CA。 當裝置連線時,其會出示完整的憑證鏈結,而 IoT 中樞知道 X.509 CA,因此可以驗證此憑證鏈結。 多個裝置可以針對相同的已驗證 X.509 CA 進行驗證。
自我簽署的 X.509
如果您的裝置有自我簽署的 X.509 憑證,則您會為 IoT 中樞 憑證版本進行驗證。 註冊裝置時會上傳憑證「指紋」,這是裝置的 X.509 憑證的雜湊。 當裝置連線時,其會出示憑證,而 IoT 中樞可以根據其所知道的雜湊來驗證此憑證。
重要
對於使用 X.509 證書頒發機構單位 (CA) 驗證的裝置,下列功能尚未正式推出,且 必須啟用預覽模式:
- HTTPS、透過 WebSocket 的 MQTT,以及透過 WebSocket 的 AMQP 通訊協定。
- 檔案上傳 (所有通訊協定)。
這些功能已在使用 X.509 指紋驗證的裝置上正式推出。
強制執行 X.509 驗證
為了獲得額外的安全性,IoT 中樞可以設定為不允許裝置和模組的SAS驗證,並將 X.509 保留為唯一接受的驗證選項。 目前,此功能無法在 Azure 入口網站中使用。 若要設定,請將 IoT 中樞資源屬性上的 disableDeviceSAS
和 disableModuleSAS
設定為 true
:
az resource update -n <iothubName> -g <resourceGroupName> --resource-type Microsoft.Devices/IotHubs --set properties.disableDeviceSAS=true properties.disableModuleSAS=true
X.509 CA 憑證驗證的優點
IoT 需要每個連線的裝置都擁有唯一的身分識別。 對於憑證式驗證,這些身分識別會採用憑證形式。
在每個裝置上提供唯一憑證的有效但效率不佳方式,就是預先產生憑證,併為所有供應鏈合作夥伴提供對應的私鑰。 這個方法伴隨著必須克服的挑戰就是確保信任,詳情如下:
不僅必須與供應鏈夥伴共用裝置的私密金鑰,還會忽視絕不共用私密金鑰的 PKI 最佳做法,使得在供應鏈建立信任的成本變得昂貴。 這需要系統 (如用來存放裝置私密金鑰的安全室) 和程序 (如定期的安全性稽核)。 這兩者都會讓供應鏈的成本增加。
安全地考慮供應鏈中的裝置,並在部署中透過裝置淘汰管理裝置,成為每個密鑰對裝置配對的一對一工作。 除非以某種方式明確內建群組概念,否則此關聯性會排除裝置的群組管理。 因此,嚴密的計算和裝置生命週期管理會成為沈重的作業負擔。
X.509 CA 憑證驗證會透過使用憑證鏈結,來提供可應對這些挑戰的卓越解決方案。 憑證鏈結的形成,是由 CA 簽署中繼 CA,中繼 CA 再簽署其他中繼 CA,如此不斷循環,直到最終的中繼 CA 簽署裝置為止。 憑證鏈結會在 CA 憑證與其下游裝置之間建立一對多關聯性。 此關聯性可讓您註冊任何數目的裝置到 IoT 中樞,方法是註冊 X.509 CA 憑證一次。
X.509 CA 驗證也可簡化供應鏈物流。 典型的裝置製造流程牽涉到多個步驟和保管者。 藉由使用證書頒發機構單位,您可以將每個監管人簽署為密碼編譯信任鏈結,而不是使用裝置私鑰來委託它們。 每位保管者以其個別的製造流程步驟簽署裝置。 最終,您會因為使用以密碼編譯的信任鏈結,藉由內建責任制度而擁有最佳的供應鏈。
當裝置保護其唯一的私密金鑰時,此程序便會產生最大安全性。 為此,建議您使用能夠在內部產生私密金鑰的硬體安全模組 (HSM)。
Azure IoT 中樞裝置佈建服務 (DPS) 可讓您輕鬆地將裝置群組佈建至中樞。 如需詳細資訊,請參閱教學課程:使用註冊群組佈建多個 x.509 裝置。
X.509 憑證流程
本節說明如何使用 X.509 CA 憑證來驗證連線到 IoT 中樞 的裝置,其中包括下列步驟:
- 取得 X.509 CA 憑證。
- 使用 X.509 CA 憑證簽署裝置。
- 註冊 X.509 CA 憑證以 IoT 中樞。
- 驗證以 X.509 CA 簽署的裝置。
- 如果裝置憑證遭到入侵,請撤銷該憑證。
取得 X.509 CA 憑證
X.509 CA 憑證位於您每個裝置的憑證鏈結頂端。 您可以購買或建立一個,視您想要使用的方式而定。
針對實際執行環境,建議您向專業憑證服務提供者購買 X.509 CA 憑證。
您也可以建立自我簽署的 X.509 CA 憑證以供測試之用。 如需建立憑證以供測試的詳細資訊,請參閱建立及上傳用於測試的憑證。 不建議針對生產環境使用自我簽署憑證。
無論 X.509 CA 憑證取得方式為何,請確保一律會將對應的私密金鑰妥善保密及保護。
購買憑證
購買 CA 憑證的好處在於,有知名的根 CA 可作為信任的第三方來擔保 IoT 裝置在連線時的合法性。 如果您的裝置是開放IoT網路的一部分,且它們與第三方產品或服務互動,請選擇此選項。
若要購買 X.509 CA 憑證,請選擇根憑證服務提供者。 根 CA 提供者會引導您如何建立公開/私鑰組,以及如何為其服務產生憑證簽署要求(CSR)。 CSR 是向憑證授權單位申請憑證的正式程序。 經過這次的購買,便可獲得用來作為授權單位憑證的憑證。 由於 X.509 憑證非常普遍,此憑證可能已正確格式化為 IETF 的 RFC 5280 標準。
建立自我簽署憑證
建立自我簽署 X.509 CA 憑證的程序與購買程序類似,差別只在於涉及第三方簽署者,例如根憑證授權單位。
您可以選擇此選項來進行測試,直到準備好購買授權單位憑證。 如果您的裝置不會連線到 IoT 中樞以外的任何第三方服務,您也可以在生產環境中使用自我簽署的 X.509 CA 憑證。
將裝置簽署至憑證信任鏈結中
X.509 CA 憑證的擁有者可以密碼編譯方式簽署中繼 CA,進而簽署另一個中繼 CA 等等,直到最後一個中繼 CA 簽署裝置憑證為止。 結果會是串聯的憑證鏈結,稱為「憑證信任鏈結」。 此信任委派很重要,因為它會建立監管鏈,並避免共用簽署密鑰。
鏈結中的這一連串憑證呈現出授權單位的交接邏輯。 許多供應鏈都會遵循此邏輯交接,讓每個中繼 CA 在接收所有上游 CA 憑證時,都會登入鏈結。 最後一個中繼 CA 最後會簽署每個裝置,並將鏈結中的所有授權單位憑證插入裝置。
裝置憑證(也稱為分葉憑證)必須將其一般名稱 (CN) 設定為在 Azure IoT 中樞 中註冊 IoT 裝置時所使用的裝置識別碼 (CN=deviceId
)。 需要此設定才能進行驗證。
對於使用 X.509 驗證的模組,模組的憑證一般名稱 (CN) 格式必須如 CN=deviceId/moduleId
。
了解如何建立憑證鏈結 (會在簽署裝置時完成)。
向 IoT 中樞註冊 X.509 CA 憑證
將您的 X.509 CA 憑證註冊至 IoT 中樞,以用它來驗證您的裝置。 X.509 CA 憑證可以驗證在其憑證信任鏈結中具有 CA 的任何裝置。 註冊 X.509 CA 憑證是兩個步驟的程序,其中包括上傳憑證檔案,然後建立擁有權證明。
上傳程序需要上傳一個包含您憑證的檔案。 此檔案一律不應包含任何私密金鑰。
擁有權證明步驟牽涉到您和 IoT 中樞 之間的密碼編譯挑戰和響應程式,以確認您確實擁有 CA 憑證。 您可以選擇自動或手動驗證所有權。 針對手動驗證,IoT 中樞 會產生隨機挑戰,讓您使用 CA 憑證的私鑰進行簽署。 如果您依照建議來將私密金鑰妥善保密及保護,則只有您知道如何完成此步驟。 在此方法中,私密金鑰的保密性就是信任的來源。 簽署挑戰之後,您會上傳包含結果的檔案以完成驗證。
了解如何註冊您的 CA 憑證。
驗證以 X.509 CA 憑證簽署的裝置
註冊 X.509 CA 憑證,並使用憑證信任鏈結簽署的裝置,最後一個步驟是裝置驗證。 當以 X.509 CA 簽署的裝置連線時,它會上傳其憑證鏈結來進行驗證。 有了此資訊,「IoT 中樞」就會以一個有兩步驟的程序來驗證裝置。
首先,IoT 中樞 以密碼編譯方式驗證憑證鏈結以取得內部一致性。 然後,IoT 中樞 向裝置發出擁有證明挑戰。 「IoT 中樞」會在從裝置獲得成功的所有權證明回應時,宣告裝置驗證。 此宣告會假設裝置的私密金鑰已受保護,而只有裝置能夠成功回應這個查問。 建議您在裝置中使用安全晶片 (例如「硬體安全模組」(HSM)) 來保護私密金鑰。
裝置與「IoT 中樞」的成功連線既會完成驗證程序,同時也象徵設定正確。 每次裝置連線時,IoT 中樞便會重新交涉 TLS 工作階段,並驗證裝置的 X.509 憑證。
撤銷裝置憑證
使用憑證式驗證來驗證裝置時,IoT 中樞不會檢查來自憑證授權單位的憑證撤銷清單。 如果您有因為憑證可能遭到入侵而無法連線到 IoT 中樞 的裝置,請停用身分識別登錄中的裝置。 如需詳細資訊,請參閱停用或刪除裝置。
範例案例
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 中樞執行個體。 若要發生這種情況,公司-X 必須完成一些一次性設定作業,以準備Smart-X-Widget 以進行自動連線。 此端對端案例包含下列步驟:
取得 X.509 CA 憑證
向 IoT 中樞註冊 X.509 CA 憑證
將裝置簽署到憑證信任鏈結
連線裝置
這些步驟會在教學課程:建立和上傳用於測試的憑證中示範。
取得憑證
Company-X 可以向公開的根憑證授權單位購買 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 憑證上傳程序就只是將 CA 憑證上傳到 IoT 中樞。 IoT 中樞預期憑證是放在檔案中。
不論是哪種情況,憑證檔案都不得包含任何私密金鑰。 控管公開金鑰基礎結構 (PKI) 之標準所提供的最佳做法會要求 Company-X 的私密金鑰只位於 Company-X 內。
證明擁有
和所有數位憑證一樣,X.509 CA 憑證也是容易遭到竊聽的公開資訊。 因此,竊聽程式可以攔截憑證,並嘗試將其上傳為自己的憑證。 在我們的範例中,IoT 中樞必須確定 Company-X 所上傳的 CA 憑證確實屬於 Company-X。 其做法是向 Company-X 查問,讓其透過擁有權證明 (PoP) 流程證明其擁有憑證。
針對擁有證明流程,IoT 中樞 產生隨機數位,讓 Company-X 使用其私鑰簽署。 如果 Company-X 遵循 PKI 最佳做法並保護其私密金鑰,則只有他們能夠正確地回應擁有權證明查問。 在成功回應擁有權證明查問後,IoT 中樞會繼續註冊 X.509 CA 憑證。
成功回應 IoT 中樞所提出的擁有權證明查問後,就能完成 X.509 CA 註冊。
將裝置簽署到憑證信任鏈結
在我們的範例中,憑證式驗證表示每個 Smart-X-Widget 都必須擁有唯一的裝置憑證。 公司決定使用 CA 憑證,併為每個裝置建立信任的憑證鏈結,而不是為每個裝置建立個別憑證/金鑰組。
在我們的範例中,Company-X 會簽署 Factory-Y,Factory-Y 再簽署 Technician-Z,Technician-Z 最終則簽署 Smart-X-Widget。
下圖顯示憑證信任鏈結如何在 Smart-X-Widget 範例中結合在一起。
- Company-X 永遠不會與任何 Smart-X-Widget 有實際的互動。 它會簽署 Factory-Y 的中繼 CA 憑證來起始憑證信任鏈結。
- Factory-Y 現在有自己的中繼 CA 憑證,其中包含 Company-X 的簽章。 它會將這些項目的復本傳遞給每個裝置。 它也會使用其中繼 CA 憑證來簽署技術員 Z 的中繼 CA 憑證和 Smart-X-Widget 裝置憑證。
- 技術員 Z 現在有自己的中繼 CA 憑證,具有 Factory-Y 的簽章。 它會將這些項目的復本傳遞給每個裝置。 它也會使用其中繼 CA 憑證來簽署 Smart-X-Widget 裝置憑證。
- 每個 Smart-X-Widget 裝置現在都有自己的唯一裝置憑證,以及其與整個供應鏈互動之每個中繼 CA 憑證的公開金鑰和簽章複本。 這些憑證和簽章可以回溯到原始 Company-X 根憑證。
CA 驗證方法會在裝置的製造供應鏈中注入嚴密的責任制度。 由於採用憑證鏈結程序,鏈結中每個成員的動作都會以密碼編譯方式記錄下來並可供驗證。
此程序假設唯一的裝置公開/私密金鑰組是獨立建立,而且私密金鑰在裝置內一律受到保護。 幸運的是,有能夠在內部產生金鑰並保護私密金鑰的安全矽晶片存在,其形式為硬體安全模組 (HSM)。 Company-X 只需要將一個這樣的安全晶片加入到 Smart-X-Widget 的元件用料表即可。
驗證裝置
專為進行 X.509 CA 驗證所製造的裝置,會配備唯一的裝置憑證以及從其個別的製造供應鏈所得到的憑證鏈結。 裝置連線 (即使是第一次) 進行時會經歷兩個步驟的程序:憑證鏈結上傳和擁有權證明。
在我們的範例中,每個 Smart-X-Widget 都會將其唯一的裝置憑證連同 Factory-Y 和技術員-Z X.509 CA 憑證一起上傳,然後回應 IoT 中樞 的擁有證明挑戰。
使用公司 X 的預先註冊 X.509 CA 憑證,IoT 中樞 會驗證上傳的憑證鏈結在內部一致,且 X.509 CA 憑證的有效擁有者源自鏈結。 如同 X.509 CA 註冊程序,IoT 中樞也會使用擁有權證明查問/回應程序,來確定鏈結以及裝置憑證屬於將其上傳的裝置。 如果回應成功,IoT 中樞就會接受裝置的確可信,並讓其連線。
信任基礎仰賴於保護私密金鑰,裝置的私密金鑰也包括在內。 因此,我們無法以硬體安全模組(HSM)的形式強調安全晶元的重要性,以保護裝置私鑰,以及從鏈結中任何憑證共用私鑰的整體最佳做法。
下一步
利用裝置佈建服務,使用註冊群組佈建多個 X.509 裝置。
若要深入了解組成 X.509 憑證的欄位,請參閱 X.509 憑證。
如果您有根 CA 憑證或附屬 CA 憑證,而且想要將其上傳至 IoT 中樞,您必須確認您擁有該憑證。 如需詳細資訊,請參閱教學課程:建立及上傳用於測試的憑證。