我是 MQTT 新手。我使用 ssl 创建了一个 mosquitto 代理并成功连接。我创建证书的命令为:
openssl req -new -x509 -days durations -keyout mqtt_ca.key -out mqtt_ca.crt
openssl genrsa -des3 -out mqtt_server.key size_bits
openssl req -out mqtt_server.csr -key mqtt_server.key -new
openssl x509 -req -in mqtt_server.csr -CA mqtt_ca.crt -CAkey mqtt_ca.key -CAcreateserial -out mqtt_server.crt -days durations*
在 mosquitto.conf 中:
port 8883
cafile your_path/mqtt_ca.crt
certfile your_path/mqtt_server.crt
keyfile your_path/mqtt_server.key
require_certificate false
tls_version tlsv1.1
但这只是一种方式的连接。我想将 `require_certificate 设置为 true,但我不知道如何创建客户端证书和修改 mosquitto.conf。请告诉我该怎么做。非常感谢!
创建证书颁发机构太详细了,这里无法详细介绍,但是网上有很多示例,例如有很多关于如何在线创建自己的证书颁发机构(CA)的示例,例如
https://jamielinux.com/docs/openssl-certificate-authority/
对于代理证书,CN 应与运行代理的计算机的主机名匹配。
对于客户端证书,CN 可以是您想要的任何内容。
对
mosquitto.conf
文件的唯一更改是确保 cafile
条目指向您在设置 CA 说明开始时生成的 CA 证书。
如果您想强制执行
require_certificate true
,那么您可能还应该查看use_identity_as_username true
,以及在与 ACL 匹配时使用客户端证书中的 CN 作为用户名
对于任何偶然发现这个问题的人,这个问题的答案在这里详细列出: http://www.steves-internet-guide.com/creating-and-using-client-certificates-with-mqtt-and-mosquitto/