你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍了如何为 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作如何使用 Azure Key Vault 来管理证书。
- OPC UA 连接器的 OPC UA 证书基础结构 - 本文介绍受信任的证书列表和颁发者证书列表的角色。
先决条件
- 使用机密设置部署的 Azure IoT 操作实例。 如果使用测试设置部署了 Azure IoT作,则需要首先 启用安全设置。
为 OPC UA 的连接器配置自签名应用程序实例证书
OPC UA 连接器的默认部署会安装证书管理器所需的所有资源,以创建符合 OPC UA 的自签名证书。 此证书存储在 aio-opc-opcuabroker-default-application-cert
机密中。 此机密将映射到所有 OPC UA 连接器 Pod,并充当 OPC UA 客户端应用程序实例证书。
cert-manager
处理此应用程序实例证书的自动续订。
此配置通常足以在演示或探索环境中实现 OPC UA 服务器和 OPC UA 连接器之间的合规和安全通信。 对于生产环境,请在部署中使用 企业级应用程序实例证书 。
配置受信任的证书列表
若要连接到 OPC UA 服务器,首先需要建立应用程序身份验证相互信任。 若要配置 OPC UA 连接器要连接的服务器的受信任证书列表,请执行以下操作:
若要使用运营体验网页用户界面管理受信任的证书列表,请完成以下步骤:
获取 OPC UA 服务器应用程序的实例证书作为文件。 这些文件通常具有
.der
或.crt
扩展名。 此文件仅包含公钥。提示
通常,OPC UA 服务器具有一个接口,可用于导出其应用程序实例证书。 此接口不是标准化的。 对于 KEPServerEx 等服务器,有一个基于 Windows 的配置 UI 用于证书管理。 其他服务器可能具有 Web 界面或使用操作系统文件夹来存储证书。 若要了解如何导出应用程序实例证书,请参阅服务器的用户手册。 获得证书后,请确保它是 DER 或 PEM 编码的。 这些证书通常存储在具有
.der
或.crt
扩展名的文件中。 如果证书不是其中一种文件格式,请使用openssl
等工具将证书转换为所需的格式。可以将证书直接作为机密添加到 Azure Key Vault,并从那里导入,也可以使用操作体验将证书上传到受信任的证书列表。
注释
OPC UA 的连接器使用名为 aio-opc-ua-broker-trust-list 的 Kubernetes 本机机密来存储受信任的证书列表。 部署 Azure IoT 操作时会创建此机密。
若要查看受信任的证书列表,请选择“ 管理证书和机密 ”,然后选择 “证书”:
可以从本地计算机上传证书文件,或者添加以前在 Azure Key Vault 中添加为机密的证书文件:
选择“应用”保存更改。 证书现已添加到受信任的证书列表中。 如果上传证书,它会自动作为机密添加到 Azure Key Vault。
如果 OPC UA 服务器使用证书颁发机构(CA)颁发的证书,则可以通过将其公钥证书添加到受信任的证书列表来信任 CA。 现在,OPC UA 连接器会自动信任使用 CA 颁发的有效证书的所有服务器。 因此,无需将 OPC UA 服务器的证书显式添加到 OPC UA 连接器的受信任证书列表中。 目前,您无法使用操作经验将证书吊销列表添加到受信任的证书列表中。
提示
若要在操作体验中添加新证书,必须被分配到 Azure Key Vault 的 Key Vault 密钥保管库机密管理员 角色。
重要
如果要从 Azure Key Vault 添加证书,则必须将其存储为机密而不是证书。
配置颁发者证书列表
如果 OPC UA 服务器使用 CA 颁发的证书,但不想信任 CA 颁发的所有证书,请配置颁发者证书列表:
在你配置包含中间证书的颁发者证书列表之前,必须先将 CA 证书添加到受信任证书列表中。 OPC UA 的连接器使用 CA 证书来验证 OPC UA 服务器的证书的颁发者链。
要使用操作体验 Web UI 管理发行者证书列表,请完成以下步骤:
获取用于将服务器实例证书签名为文件的颁发者证书。 这些文件通常具有
.der
或.crt
扩展名。 此文件仅包含公钥。 您可能也有颁发机构证书的 .crl 文件(证书吊销列表)。可以直接将颁发者证书作为机密添加到 Azure Key Vault 中,然后从中导入;或者可以通过操作流程将证书和证书吊销列表(.crl 文件)上传到颁发者证书列表。
注释
OPC UA 的连接器使用名为 aio-opc-ua-broker-issuer-list 的 Kubernetes 本机机密来存储颁发者证书列表。 部署 Azure IoT 操作时会创建此机密。
若要查看颁发者证书列表,请选择“ 管理证书和机密 ”,然后选择 “证书” :
可以从本地计算机上传颁发者证书文件,或者添加以前在 Azure Key Vault 中添加为机密的证书文件:
选择“应用”保存更改。 证书现已添加到颁发者证书列表中。 如果上传证书,它会自动作为机密添加到 Azure Key Vault。
还可以使用操作体验将 .crl 文件的证书吊销列表添加到受信任的证书列表中。
提示
若要在操作体验中添加新证书,必须被分配到 Azure Key Vault 的 Key Vault 密钥保管库机密管理员 角色。
重要
如果要从 Azure Key Vault 添加证书,则必须将其存储为机密而不是证书。
配置 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
kubectl -n azure-iot-operations get secret aio-opc-opcuabroker-default-application-cert -o jsonpath='{.data.tls\.crt}' | %{ [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($_)) } > 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
) 配置机密 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 服务器的受信任证书列表中。