首页 > 解决方案 > 为 OPC 客户端生成证书

问题描述

我正在编写一个 OPC UA 客户端以连接到 Sofnet(西门子的 OPC 服务器)。连接的服务器方法是 SignAndEncrypt 所以我需要一个“der”格式的 x509 证书。

我用 openssl 制作了自己的自签名证书,但是有一个名为“Subject Alt Names”的字段,我必须在其中指定 URI 的应用程序。我已经看到这个字段可以用 openssl 的配置文件填充,但是当我创建证书时,我看不到“主题替代名称”。

有人可以帮我创建证书或给我一个线索来验证我的 OPC 客户端吗?

提前致谢。

标签: opensslcertificatex509certificateopcopc-ua

解决方案


您可以制作一个 bash 文件(即:mkcert.sh),它将完成以下所有过程:

  • 创建 2048 位 RSA 密钥。
  • 创建证书请求。
  • 使用您自己的密钥(自签名证书)对其进行签名,并将 extensions.cnf 中的额外信息添加到证书中
  • 获取证书的 PEM 和 DER 版本(选择)

bash 文件应包含

openssl genrsa -out default_pk.pem 2048
openssl req -new -key default_pk.pem -out cert.csr -subj "/C=US/ST=NY/L=NY/O=Organization/OU=OrganizationUnit/CN={YOUR_IP}"
openssl x509 -req -days 3650 -extfile extensions.cnf -in cert.csr -signkey default_pk.pem -out public.pem
openssl x509 -in public.pem -inform PEM -out public.der -outform DER

然后您需要包含 SubjectAltName 信息和一些其他信息的 extensions.cnf 文件。

basicConstraints=CA:TRUE
authorityKeyIdentifier=keyid,issuer
keyUsage=dataEncipherment,keyEncipherment,nonRepudiation,digitalSignature,keyCertSign,cRLSign
extendedKeyUsage=serverAuth,clientAuth
subjectAltName=URI:URN:{YOUR_IP}

将这两种情况下的 {YOUR_IP} 替换为您的真实 OPC UA 客户端 IP。


推荐阅读