ssl - 使用 TLS 和 mosquitto 运行 mosquitto 代理时遇到错误
问题描述
我正在尝试使用 TLS 通过 mqtt 进行通信。我的系统中安装了 ubuntu。对于使用 TLS,我使用以下链接创建了证书:
我能够创建证书。我已从bind_address
配置文件中删除。我开始使用带有mosquitto -c mosquitto_m2mqtt.conf -v
. Mosquitto 启动,但是当我运行mosquitto_sub
命令时,出现如下错误:
mosquitto -c mosquitto_m2mqtt.conf -v
1551172930: mosquitto version 1.4.8 (build date 2016-09-21 11:21:45+0530) starting
1551172930: Config loaded from mosquitto_m2mqtt.conf.
1551172930: Opening ipv4 listen socket on port 8883.
1551172930: Opening ipv6 listen socket on port 8883.
Enter PEM pass phrase:
1551172960: New connection from 127.0.0.1 on port 8883.
1551172960: OpenSSL Error: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
1551172960: OpenSSL Error: error:140940E5:SSL routines:ssl3_read_bytes:ssl handshake failure
1551172960: Socket error on client <unknown>, disconnecting.
在我订阅的窗口中,我收到如下错误:
mosquitto_sub -p 8883 -q 1 -t sensor/temp --cafile /etc/mosquitto/m2mqtt_srv.crt --tls-version tlsv1 -d
Unable to connect (A TLS error occurred.).
以下是配置文件中添加的参数。
port 8883
cafile /etc/mosquitto/m2mqtt_ca.crt
certfile /etc/mosquitto/m2mqtt_srv.crt
keyfile /etc/mosquitto/m2mqtt_srv.key
tls_version tlsv1
解决方案
mosquitto_sub 和 pub 需要一个主机地址或 ip。例如,我在本地使用 test.mosquitto.org,从该站点下载 pem 格式的证书文件,并将此证书作为“cafile”添加到 conf 文件中。这是我的命令:
mosquitto_sub -h test.mosquitto.org -t "test" -p 8883 --cafile "<pem formatted crt file path (downloaded from test.mosquitto.org)>"
推荐阅读
- dynamic - 在 DDNS 情况下,我可以使用 CNAME 记录(仅)在没有 A 记录的情况下重定向我的域吗?
- ruby-on-rails - Rails 在 Controller 中查询模型定义的方法
- python - pandas 根据条件和时间戳序列对数据帧进行切片
- python - 根据某些条件,将值设置为 Nan 在 Pandas 中不起作用
- node.js - 使用节点,一旦完成执行,进程就不会退出
- python - Pandas 更快地将 pd.pct_change 应用于多个列和多个间隔
- javascript - 是否可以使用他们的 player.js 库在 Vimeo iframe 上使用自定义光标?
- knex.js - 是否有等效于 knex.pluck() 的方法可以返回多列的值?
- git - 为什么我在 Android Studio 3.3.1 中执行 Checkout revision 和 Commit 操作时会收到“Detached Head”消息?
- android-studio - 在 android studio 项目中 access$ 是什么意思?