如何将您自己的安全证书与 PLCnext 控件上的 OPC UA 服务器一起使用
这是对最初于 2018 年 11 月发表的文章的更新。
所有 PLCnext 控件都包含一个嵌入式 OPC UA 服务器。与所有 OPC UA 服务器一样,此服务器包括使用公钥加密与客户端建立安全连接的选项。本指南介绍如何使用您自己的安全证书(包括您自己的私钥)与 PLCnext Control 建立安全的 OPC UA 连接。
有关如何管理 OPC UA 服务器证书的一般信息,请参阅:
- OPC UA 设置 PLCnext Engineer 的集成帮助系统部分。
- PLCnext 信息中心:
- 嵌入式 OPC UA 服务器 (eUA)
- 证书认证。
简介
PLCnext Control 嵌入式 OPC UA 服务器需要 X.509 证书以确保与 OPC UA 客户端进行可信通信。可以使用的证书主要有四种:
选项 1 – 自动生成自签名证书。
- 所需的证书由 PLC 自动创建。
- 设置简单。
- 可用于测试和在安全 LAN 上永久使用。
选项 2 – 手动生成的自签名证书。
- 与选项 1 相比没有额外的安全优势,但让管理员可以更好地控制证书的管理。
选项 3 – 由您自己的证书颁发机构 (CA) 签署的证书。
- 与选项 1 和 2 相比没有额外的安全优势,但允许对证书进行更结构化的管理。
选项 4 – 由受信任的证书颁发机构颁发的证书
- 需要从受信任的第三方证书颁发机构(如 Symantec 或 GeoTrust)购买证书。这是公共网络或其他不安全网络的推荐选项,因为所有客户端都应接受由受信任的 CA 签名的证书。
先决条件
要成功执行以下程序,您需要:
- 对公钥加密和 X.509 证书有基本的了解。
- 对 OPC 以及(特别是)OPC UA 技术的基本了解。
本指南中描述的程序是使用以下硬件和软件准备的:
- AXC F 2152 控制器,固件版本 2020.6.1
- PLCnext Engineer 2020.6 版
- UAExpert 1.5.1 版
- 已创建数据库的 XCA 版本 2.3.0
背景阅读
- 公钥加密
- X.509
- 创建 X.509 证书 (PDF)
- 什么是 OPC?
- OPC 统一架构
- 面向管理员的 OPC UA 安全模型 (PDF)
程序
选项 1 – 自动生成的自签名证书
这是在 PLCnext Engineer 中创建新项目时的默认选项。
- 按照技术支持 YouTube 频道视频中的配置 OPC UA 服务器的过程进行操作。
这会在名为 OPC UA-self-signed 的身份存储中自动创建一个自签名证书 ,您可以在 PLC 的基于 Web 的管理页面的 Certificate Authentication 中看到 窗口(在安全 部分)。
现在,当从 UA Expert 建立与 OPC UA 服务器的连接时,可以看到自签名证书的名称“eUAServer@axc-f-2152-1”:
由于证书不是由受信任的 CA 签署的,因此用户需要明确信任此证书。
在确认证书可以信任后,UA Expert 可能会显示错误“BadCertificateHostNameInvalid”。这是因为用于连接 OPC UA 服务器的 URL 与证书的 IPAddresses 或 DNSnames 字段中的任何条目都不匹配(可以在 UA Extensions 中看到 上一节)。这可以通过在证书中添加相应的条目来纠正,这可以在 PLCnext Engineer 的 OPC UA 设置窗口中完成。
请注意,虽然 UA Expert 提供了忽略 BadCertificateHostNameInvalid 错误并仍连接到服务器的选项,但许多其他 OPC UA 客户端在遇到此错误时将简单地拒绝连接。
选项 2 - 手动生成的自签名证书
- 在 XCA 中,创建一个新的自签名证书。
- 在“文件”菜单项下打开(或创建)一个数据库。
- 在“证书”标签中,点击“新证书”按钮:
- 在下一个对话框中,源选项卡将处于活动状态。默认情况下,应该已经检查了签名选项“创建自签名证书”:
- 切换到“主题标签”并填写字段。示例如下所示。
- 点击“生成新密钥”按钮。这会为此证书生成一个唯一的私钥。
- 在“扩展”选项卡中,将证书的有效期设置为所需的期限,并在“X509v3 主题备用名称”字段中输入条目。该字段不能为空——这是 OPC UA 规范的要求。选项 1 中提到的 IPAddresses 和 DNSnames 字段对应于这些字段
- 。
- 单击“确定”创建证书。
- 创建证书后,在 XCA 主窗口中选择证书,然后单击“导出”。导出证书和未加密的私钥,格式为“PEM + key (*.pem)”:
- 在 PLCnext Engineer 中,将 OPC UA 服务器“证书”字段从“控制器自签名”更改为“控制器上的文件”。
- 将 PLCnext Engineer 项目下载到 PLC。
- 在 PLC 的基于网络的管理页面上,导航到 证书验证 安全性中的窗口 部分。一个名为 OPC UA-configurable 的新身份存储 已创建。
- 将第 2 步中创建的文件中的证书和密钥加载到新的身份存储中:
- 通过单击“设置”按钮并选择证书/密钥文件来加载证书。将出现错误,指示现有密钥对和新证书不匹配。
- 通过单击“设置”按钮并选择证书/密钥文件来加载私钥。错误将消失。
- 重新启动 PLCnext Runtime,以便 OPC UA 服务器获取新证书。
现在可以使用此手动创建的自签名证书将客户端连接到 OPC UA 服务器。使用UA Expert连接时,可以看到自定义证书的详细信息。
选项 3 – 由您自己的证书颁发机构签署的证书。
在 XCA 中,可以创建您自己的证书颁发机构 (CA),然后使用该 CA 签署您的证书。所需的其他步骤在本文开头引用的“创建 X.509 证书”文档中进行了描述。请注意,当导出 .pem
文件,导出格式必须为“PEM链(*.pem)”。
与上面的选项 2 一样,此证书应加载到 OPC UA-configurable 身份存储。
选项 4 – 由受信任的证书颁发机构颁发的证书
在这种情况下,证书是从受信任的证书颁发机构购买并由其签名的。同样,此证书应加载到 OPC UA-configurable 身份存储。如果 OPC UA 客户端知道 CA,那么连接到 OPC UA 服务器时应该不会出现警告或错误。
在中央服务器上管理证书
无需在 PLC 上手动加载安全证书,而是可以将证书从 OPC UA 全局发现服务器推送到 PLC。这有助于在包含多个 OPC UA 服务器的网络上管理安全证书。
这个话题将在另一篇文章中讨论。
工业技术