用户自己生成 PKI 密钥对和证书

2021-07-28 浏览次数:134
用户自己生成 PKI 密钥对和证书

只有在使用无法自行创建 PKI 密钥对和客户端证书的 OPC UA 客户端时,才会涉及此部分内容。此时,可通过 OpenSSL 生成一个私钥和一个公钥,生成一个 X.509 证书,并对该证书进行签名。

使用 OpenSSL

OpenSSL 属于传输层安全工具,可用来创建证书。您还可以使用其它工具,例如 XCA,一款密钥管理软件,该软件具有图形用户界面,改进了已颁发证书的总览功能。

要在 Windows 系统中使用 OpenSSL,请按以下步骤操作:

    在 OpenSSL 系统中,安装 Windows。如果操作系统为 64 位,则 OpenSSL 将安装在“C:\OpenSSL-Win64”目录中。OpenSSL-Win64 作为开源软件,可从不同的软件提供商处下载。

    创建一个目录,如“C:\demo”。

    打开命令提示符。为此,单击“Start”,并在搜索栏中输入“cmd”或“command prompt”。右键单击结果列表中的“cmd.exe”,并以管理员身份运行该程序。Windows 将打开命令提示符。

    切换到“C:\demo”目录。为此,可输入以下命令:“cd C:\demo”。

    设置以下网络变量:

    set RANDFILE=c:\demo\.rnd

    set OPENSSL_CONF=C:\OpenSSL-Win64\bin\openssl.cfg

    下图显示了包含以下命令的命令行窗口:

    现在,启动 OpenSSL。如果 OpenSSL 已安装在 C:\OpenSSL-Win64 目录中,则可输入:C:\OpenSSL-Win64\bin\openssl.exe。下图显示的命令行窗口中包含以下命令:

    生成私钥。将密钥保存到“myKey.key”文件。在本示例中,密钥的长度为 1024 位;为了实现更高的 RSA 安全性,实际长度采用 2048 位。输入以下命令:“genrsa -out myKey.key 2048”(在本示例中为“genrsa -out myKey.key 1024”)。下图显示了包含该命令的命令行以及 OpenSSL 输出结果:

    生成一个 CSR (Certificate Signing Request)。为此,可输入以下命令:“req -new -key myKey.key -out myRequest.csr”。在该命令的执行过程中,OpenSSL 将查询有关证书的信息:

    国家/地区名称:如,“DE”为德国,“FR”为法国

    州或省名称:例如“Bavaria”。

    位置名称:如,“Augsburg”

    机构名称:输入公司的名称。

    机构单位名称:如,“IT”

    公共名称:如,“OPC UA client of machine A”

    电子邮件地址:


提示

针对固件版本为 V2.5、作为服务器的 S7-1500 CPU 的注意事项

客户端程序的 IP 地址需存储在 S7-1500 CPU 版本 V2.5(仅针对此版本)所创建证书的“主题备用名称”(Subject Alternative Name) 字段中;否则 CPU 将不接受该证书。



输入的信息将添加到证书中。下图显示了包含该命令的命令行以及 OpenSSL 输出结果:

该命令将在包含有 Certificate Signing Request (CSR) 的 C:\demo 目录中创建一个文件;在本示例中,为“myRequest.csr”。

使用 CSR

可通过以下两种方式使用 CSR:

将 CSR 发送到证书颁发机构 (CA):读取特定证书颁发机构的信息。证书颁发机构 (CA) 将检查用户的身份和信息(认证),并使用该证书颁发机构的私钥对该证书进行签名。如,接收已签名的 X.509 证书,并将该证书用于 OPC UA、HTTPS 或 Secure OUC (secure open user communication) 中。通信伙伴将使用该证书颁发机构的公钥检查该证书是否确实由 CA 机构颁发(即,该证书颁发机构已确定您的信息)。

用户对 CSR 进行自签名:使用用户的私钥。该选项将在下一个操作步骤中介绍。

自签名证书

输入以下命令,生成一个证书并对自签名(自签名证书):“x509 -req -days 365 -in myRequest.csr -signkey myKey.key -out myCertificate.crt”。

下图显示了包含以下命令和 OpenSSL 的命令行窗口:

该命令将生成一个 X.509 证书,其中包含通过 CSR 传送的属性信息(在本示例中,为“myRequest.csr”),例如有效期为一年(-days 365)。该命令还将使用私钥对证书进行签名(在本示例中为“myKey.key”)。通信伙伴可使用公钥(包含在证书中)检查您是否拥有属于该公钥的私钥。这样还可以防止公钥被攻击者滥用。

通过自签名证书,用户可确定自己证书中的信息是否正确。此时,*依靠任何机构即可检查信息是否正确。


shtxjd.cn.b2b168.com/m/
top