文章目录
- 一.在编程 PC 上安装 OpenSSL
- 1. 下载安装 OpenSSL
- 2.生成CA认证
- 3. 生成 Broker 证书
- 4. 生成各个 Client 的证书
一.在编程 PC 上安装 OpenSSL
为了使用带 TLS 安全证书的 ADS Over MQTT,在 MQTT 的 Server 和 Client 侧都需要证书以进行安全通信,避免窃听,同时确认另一端连接者的身份。 OpenSSL 就是一个开放的制作签发安全证书的工具。
1. 下载安装 OpenSSL
-
从 OpenSSL 官网可以下载该工具。OpenSSL官网没有提供windows版本的安装包,可以选择其他开源平台提供的工具。下载地址。
-
双击下载好的安装包
-
选择accept,点击Next
-
选择安装位置,点击Next
-
选择启动菜单目录,点击Next
-
选择Dll保存地址,点击Next
-
选择Install
-
等待安装完成
-
选择不捐赠,点击Finish完成安装
-
添加系统环境变量
2.生成CA认证
CA 是证书的发布者, CA 可以发布其他人的证书,把 CA 的证书加入系统信任的根证书后,由CA 发布的证书也被系统所信任,所以, CA 的 key 是必须小心保护的,一般都要加密保护,并且限制为 root 权限读写。
-
在编程 PC 中打开 Cmd 窗体,输入以下命令行,生成自签发证书 CA.crt
req –new –x509 –days 60 –extensions v3_ca –keyout C:\TwinCAT\3.1\CustomConfig\Certificates\CA.key –out C:\TwinCAT\3.1\CustomConfig\Certificates\CA.crt
生成 CA 证书的过程中,要求输入 PEM pass phrase,这是设置 CA 自签发证书的密码,用它签发其它证书的时候需要输入这个密码。设置密码后还要求 Verifying,需要再次输入刚才设置的密码。然后要求输入 Country Name 等信息,其中有意义的是 Organization 和 Common Name,便于将来证书的使用者识别这是什么机构、谁签发的证书。其它项目则可填可不填。
- req 生成签名请求;
- new 新的请求;
- key 使用文件中包含的密钥;
- out 将密钥输出到文件。
- extensions v3_ca 按照 openssl.cnf 文件中配置的 v3_ca 项添加扩展 , v3_ca 中指定 的basicConstraints 的值为 CA:TRUE,表示该证书是颁发给 CA 机构的根证书,可以用来签发其它证书。
- x509 输出 X509 结构而不是证书 Req
执行该命令行的结果,在指定路径下就有了以下证书文件:
3. 生成 Broker 证书
-
创建服务端的密钥 Key(Creating the certificate)
genrsa -out C:\TwinCAT\3.1\CustomConfig\Certificates\broker.key 2048
其中:
- Genrsa ——使用 RSA 算法产生私钥, RSA 是非对称加密算法的一种
- -out ——输出文件的路径
- 2048 ——指定秘钥长度
-
用上述 Key 创建一个证书签名请求 CSR(Creating the Certificate Signing Request)
req –out C:\TwinCAT\3.1\CustomConfig\Certificates\broker.csr –key C:\TwinCAT\3.1\CustomConfig\Certificates\broker.key –new
注意,上图中最重要的参数是 Common Name,应该是将要使用该证书的 PC 机的名称或者 IP
地址。对于云服务器,可以使用固定的 IP 地址。
密码可以设置,也可以不设置。其它参数项也可以为空。
-
用上述 CA 和 CSR 请求签发证书
x509 –req –in C:\TwinCAT\3.1\CustomConfig\Certificates\broker.csr –CA C:\TwinCAT\3.1\CustomConfig\Certificates\CA.crt –CAkey C:\TwinCAT\3.1\CustomConfig\Certificates\CA.key –CAcreateserial –out C:\TwinCAT\3.1\CustomConfig\Certificates\broker.crt -days 60
在命令行中:
- x509 ——是对证书的 X.509 标准编解码格式。
- Cacreateserial ——表示创建证书序列号文件(即上方提到的 serial 文件),创建的序列号文件默认名称为-CA,指定的证书名称后加上.srl 后缀
4. 生成各个 Client 的证书
-
创建客户端的密钥 Key(Creating the XAE certificate)
genrsa –out C:\TwinCAT\3.1\CustomConfig\Certificates\TwinCAT_XAE.key 2048
-
用上述 Key 建一个证书签名请求 CSR(Creating the Certificate Signing Request):
req –out C:\TwinCAT\3.1\CustomConfig\Certificates\TwinCAT_XAE.csr –key C:\TwinCAT\3.1\CustomConfig\Certificates\TwinCAT_XAE.key –new
注意,上图中最重要的参数是 Common Name,应该是将要使用该证书的 PC 机的名称。PC机名称可以通过在CMD窗口中输入ipconfig/all查看
密码可以设置,也可以不设置。其它参数项也可以为空。
-
上述 CA 为 CSR 请求签发证书
x509 –req –in C:\TwinCAT\3.1\CustomConfig\Certificates\TwinCAT_XAE.csr –CA C:\TwinCAT\3.1\CustomConfig\Certificates\CA.crt –CAkey C:\TwinCAT\3.1\CustomConfig\Certificates\CA.key –CAcreateserial –out C:\TwinCAT\3.1\CustomConfig\Certificates\TwinCAT_XAE.crt –days 60