[MQTT] TLS 证书生成

在互联网通讯时,为了保证数据交换的加密型,完整性和一致性,需要对连接进行加密处理
最常用的如HTTPS,以及工业IOT常使用的OPC UA 和MQTT 都使用SSL/TLS 对通讯进行加密

本文介绍如何为TLS 加密通讯生成安全证书等文件

  • 使用OpenSSL 生成TLS证书
  • 使用Anybus Certificate Generator生成TLS证书

使用OpenSSL 生成TLS证书

1.创建自签名 CA 证书

前置准备:已安装 OpenSSL
运行以下命令生成密钥对,该命令随即会提示您输入密钥保护密码,后续在生成、签发、验证证书时均需要此密码。
请妥善相关密钥及密码。

openssl genrsa -des3 -out rootCA.key 2048

运行以下命令通过密钥对中的私有密钥生成 CA 证书,该命令随即会提示您设置证书的唯一标识名称 DN(Distinguished Name)。

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.crt

2.签发服务器证书

使用 CA 证书来签发服务器证书,用于验证服务器所有者的身份,服务器证书通常颁发给主机名、服务器名称或域名(如 www.emqx.com, localhot)。我们需要 CA 密钥(rootCA.key)、CA 证书( rootCA.crt)和服务端 CSR (server.csr)生成服务器证书。

运行以下命令生成服务器证书密钥对:

openssl genrsa -out server.key 2048

运行以下命令使用 Server 密钥对制作 CSR。经 CA 根证书私钥签名后,CSR 可生成颁发给用户的证书公钥文件。该命令随即也会要求设置证书的唯一标识名称。

openssl req -new -key server.key -out server.csr

系统将提示以下信息,对应的含义如下:

Country Name (2 letter code) [AU]: CN
State or Province Name (full name) [Some-State]: BJ
Locality Name (eg, city) []: BJ
Organization Name (eg, company) [Internet Widgits Pty Ltd]: HMS
Organizational Unit Name (eg, section) []: MUGC
Common Name (e.g. server FQDN or YOUR name) []: emqx.swwtech.cn

⚠️ Common Name 处一定要填写服务器的域名或者IP地址

使用 CSR 生成服务器证书,此时也可指定证书的有效天数,此处为 365 天:

openssl x509 -req -in server.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out server.crt -days 365
  1. 签发客户端证书
    签发客户端证书的步骤与签发服务器证书类似,只是在生成 CSR 时,需要将 Common Name 设置为客户端的唯一标识,如用户名、客户端 ID 等。

客户端证书与服务端证书使用相同的 CA 证书签名,因此客户端证书也可以使用上述 CA 证书签名。

openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr
openssl x509 -req -in client.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out client.crt -days 365

至此得到了一组证书,包括CA,服务器和客户端

.
├── rootCA.crt
├── rootCA.key
├── rootCA.srl
├── server.crt
├── server.csr
└── server.key
├── client.crt
├── client.csr
└── client.key

使用Anybus Certificate Generator生成TLS证书

Anybus Certificate Generator 是Anybus 提供的证书生成软件,可以为Anybus 旗下的Anybus CompactCom M40 IIOT 模块生成TLS证书
其底层是基于OpenSSL,因此生成的CA和设备证书也同样适用于其他产品

Anybus Certificate Generator 软件下载地址
https://www.anybus.com/docs/librariesprovider7/default-document-library/software/anybus-certificate-generator.zip?sfvrsn=7bd553d7_18

软件安装完成后,打开后如下图所示

1.创建自签名 CA 证书

点击软件左下角的“Mange…”,弹窗“Mange CA Certificates”,可以查看已经生成的CA证书

可以点击“New…”,

填写完相关信息后,可点击“Generate CA Certificate” 新建CA证书

新建的CA证书,会出现在“Mange CA Certificate” 窗口的列表中

点击选中需要的CA证书,然后点击“Show in folder”,可以打开CA证书保存的文件夹

2.创建服务器/客户端证书

在“Mange CA Certificate” 窗口,点击选中需要的CA证书,然后点击“Show associated certificate…”,可以弹出
“Certificats issued by ???” 显示该CA证书创建的服务器/客户端证书

点击“New”, 可以使用该CA证书创建新的服务器/客户端证书

在弹出的窗口中,填写相关的信息

⚠️Common Name(CN)处,如果是服务器使用则填写服务器的域名或者IP地址

填写完毕,点击“Continue”,会生成需要的证书,并显示在“Certificats issued by ???”窗口列表

点击生成的证书,点击“Show in folder” 可以查看证书存放的文件夹

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。