為 OPC UA 連接器設定 OPC UA 憑證基礎結構
在本文中,您將了解如何為 OPC UA 連接器設定 OPC UA 憑證基礎結構。 此設定可讓您判斷您信任可與其安全地建立工作階段的 OPC UA 伺服器。
根據 OPC UA 規格,OPC UA 連接器在與 OPC UA 伺服器建立安全通訊時,會作為單一的 OPC UA 應用程式。 OPC UA 連接器會針對其向 OPC UA 伺服器開啟的所有安全通道,使用相同的應用程式執行個體憑證。
若要深入了解,請參閱 OPC UA 連接器的 OPC UA 憑證基礎結構。
必要條件
Azure IoT 作業的已部署實例。 若要部署 Azure IoT 作業以進行示範和探索,請參閱 快速入門:使用 K3 在 GitHub Codespaces 中執行 Azure IoT 作業。
設定自我簽署的應用程式執行個體憑證
OPC UA 連接器的預設部署會安裝 cert-manager 所需的所有資源,以建立符合 OPC UA 規範的自我簽署憑證。 此憑證會儲存在 aio-opc-opcuabroker-default-application-cert
秘密中。 此秘密會對應至所有 OPC UA 連接器 Pod,並作為 OPC UA 用戶端應用程式執行個體憑證。 cert-manager
會處理此應用程式執行個體憑證的自動更新。
在示範或探索環境中,此設定通常就足以在 OPC UA 伺服器與 OPC UA 連接器之間達成符合規範且安全的通訊。 若為實際執行環境,則請在部署中使用企業級的應用程式執行個體憑證。
設定信任憑證清單
若要連線到某個資產,您必須先建立應用程式驗證相互信任。 針對 OPC UA 連接器,請完成下列步驟:
取得 OPC UA 伺服器應用程式的執行個體憑證檔案。 這些檔案的副檔名通常是 .der 或 .crt。 這只是公開金鑰。
提示
一般而言,OPC UA 伺服器會有介面供您匯出其應用程式執行個體憑證。 此介面並未標準化。 若為 KEPServerEx 之類的伺服器,會有 Windows 型的設定 UI 供您管理憑證。 其他伺服器則可能會有 Web 介面,或是使用作業系統資料夾來儲存憑證。 請參閱伺服器的使用者手冊,以了解如何匯出應用程式執行個體憑證。 在取得憑證後,請確定其為 DER 還是 PEM 編碼。 通常會儲存在副檔名為 .der 或 .crt 的檔案中。 如果憑證不屬於這些檔案格式,請使用
openssl
之類的工具將憑證轉換為所要求的格式。將 OPC UA 伺服器的應用程式實例憑證新增至信任的憑證清單。 此清單會實作為 Kubernetes 原生秘密,名為 aio-opc-ua-broker-trust-list,此列表 會在您部署 Azure IoT 作業時建立。
若為檔案中的 DER 編碼憑證,例如「./my-server.der」,請執行下列命令:
# Append my-server.der OPC UA server certificate to the trusted certificate list secret as a new entry az iot ops connector opcua trust add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server.der"
若為檔案中的 PEM 編碼憑證,例如「./my-server.crt」,請執行下列命令:
# Append my-server.crt OPC UA server certificate to the trusted certificate list secret as a new entry az iot ops connector opcua trust add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server.crt"
如果您的 OPC UA 伺服器使用憑證授權單位 (CA) 所簽發的憑證,您可以將 CA 的公開金鑰憑證新增至 OPC UA 連接器信任憑證清單來信任 CA。 OPC UA 連接器現在會自動信任使用 CA 所簽發有效憑證的所有伺服器。 因此,您不需要明確地將 OPC UA 伺服器的憑證新增至 OPC UA 連接器信任憑證清單。
若要信任 CA,請完成下列步驟:
取得以 DER 或 PEM 格式編碼的 CA 憑證公開金鑰。 這些憑證通常會儲存在副檔名為 .der 或 .crt 的檔案中。 取得 CA 的 CRL。 此清單通常在副檔名為 .crl 的檔案中。 如需詳細資訊,請查看 OPC UA 伺服器的文件。
將 CA 憑證和 CRL 儲存在 aio-opc-ua-broker-trust-list Kubernetes 原生秘密中。
針對 ./my-server-ca.der 等檔案中的 DER 編碼 CA 憑證,請執行下列命令:
# Append CA certificate to the trusted certificate list secret as a new entry az iot ops connector opcua trust add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server-ca.der" # Append the CRL to the trusted certificate list secret as a new entry data=$(kubectl create secret generic temp --from-file= my-server-ca.crl=./ my-server-ca.crl --dry-run=client -o jsonpath='{.data}') kubectl patch secret aio-opc-ua-broker-trust-list -n azure-iot-operations -p "{`"data`": $data}"
針對 ./my-server-ca.crt 等檔案中的 PEM 編碼 CA 憑證,請執行下列命令:
# Append CA certificate to the trusted certificate list secret as a new entry az iot ops connector opcua trust add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server-ca.crt" # Append the CRL to the trusted certificates list secret as a new entry data=$(kubectl create secret generic temp --from-file=my-server-ca.crl=./my-server-ca.crl --dry-run=client -o jsonpath='{.data}') kubectl patch secret aio-opc-ua-broker-trust-list -n azure-iot-operations -p "{`"data`": $data}"
設定簽發者憑證清單
如果您的 OPC UA 伺服器使用 CA 所簽發的憑證,但您不想信任 CA 簽發的所有憑證,請完成下列步驟:
遵循上一節的前三個步驟,以信任 OPC UA 伺服器的應用程式執行個體憑證。
除了憑證本身,OPC UA 的連接器還需要 CA 憑證,才能正確驗證 OPC UA 伺服器憑證的簽發者鏈結。 將 CA 憑證及其證書吊銷清單 (CRL) 新增至稱為 aio-opc-ua-broker-issuer-list 的個別清單,該列表 會實作為 Kubernetes 秘密。
將 CA 憑證和 CRL 儲存在秘密中
aio-opc-ua-broker-issuer-list
。# Append CA certificate to the issuer list secret as a new entry az iot ops connector opcua issuer add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server-ca.der" # Append the CRL to the issuer list secret as a new entry az iot ops connector opcua issuer add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server-ca.crl"
若為檔案中的 PEM 編碼憑證,例如「my-server-ca.crt」,請執行下列命令:
# Append CA certificate to the issuer list secret as a new entry az iot ops connector opcua issuer add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server-ca.crt" # Append the CRL to the issuer list secret as a new entry az iot ops connector opcua issuer add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server-ca.crl"
設定 OPC UA 伺服器
若要完成應用程式驗證相互信任的設定,您必須將 OPC UA 伺服器設定為信任 OPC UA 連接器應用程式執行個體憑證:
若要將 OPC UA 連接器憑證解壓縮到
opcuabroker.crt
檔案中,請執行下列命令:kubectl -n azure-iot-operations get secret aio-opc-opcuabroker-default-application-cert -o jsonpath='{.data.tls\.crt}' | base64 -d > opcuabroker.crt
許多 OPC UA 伺服器僅支援 DER 格式的憑證。 如有必要,請使用下列命令將「opcuabroker.crt」憑證轉換為「opcuabroker.der」:
openssl x509 -outform der -in opcuabroker.crt -out opcuabroker.der
請參閱 OPC UA 伺服器的文件,以了解如何將
opcuabroker.crt
或opcuabroker.der
憑證檔案新增至伺服器的信任憑證清單。
設定企業級應用程式執行個體憑證
針對實際執行環境,您可以將 OPC UA 連接器設定為使用企業級應用程式執行個體憑證。 一般而言,企業 CA 會發出此憑證,而您需要 CA 憑證到您的設定。 其中通常會有 CA 階層,因此您需要將整個 CA 驗證鏈結新增至您的設定。
下列範例會參考下列項目:
項目 | 說明 |
---|---|
opcuabroker-certificate.der | 包含企業級應用程式執行個體憑證公開金鑰的檔案。 |
opcuabroker-certificate.pem | 包含企業級應用程式執行個體憑證私密金鑰的檔案。 |
subjectName |
內嵌在應用程式執行個體憑證中的主體名稱字串。 |
applicationUri |
內嵌在應用程式執行個體中的應用程式執行個體 URI。 |
enterprise-grade-ca-1.der | 包含企業級 CA 憑證公開金鑰的檔案。 |
enterprise-grade-ca-1.crl | CA 的 CRL 檔案。 |
如同先前的範例,您會使用專用的 Kubernetes 秘密來儲存憑證和 CRL。 若要設定企業級應用程式執行個體憑證,請完成下列步驟:
使用下列命令,將憑證和 CRL 儲存在 aio-opc-ua-broker-client-certificate 秘密中:
# Create aio-opc-ua-broker-client-certificate secret # Upload OPC UA public key certificate as an entry to the secret # Upload OPC UA private key certificate as an entry to the secret az iot ops connector opcua client add \ --instance <your instance name> \ -g <your resource group> \ --public-key-file "./opcuabroker-certificate.der" \ --private-key-file "./opcuabroker-certificate.pem" \ --subject-name <subject name from the public key cert> \ --application-uri <application uri from the public key cert>
如果您使用 CA 來發行 OPC UA 訊息代理程序憑證,請設定 aio-opc-ua-broker-issuer-list 秘密。 使用 Kubernetes 用戶端,例如
kubectl
設定 secrets enterprise-grade-ca-1.der 和 enterprise-grade-ca-1.crl:# Append CA certificate to the issuer list secret as a new entry az iot ops connector opcua issuer add --instance <your instance name> --resource-group <your resource group> --certificate-file "./enterprise-grade-ca-1.der" # Append the CRL to the issuer list secret as a new entry az iot ops connector opcua issuer add --instance <your instance name> --resource-group <your resource group> --certificate-file "./enterprise-grade-ca-1.crl"
既然 OPC UA 連接器使用了企業憑證,請別忘了將新憑證的公開金鑰新增至其需要連線之所有 OPC UA 伺服器的信任憑證清單中。