ubuntu 下mosquitto TLS配置

1、/etc/mosquitto/mosquitto.conf文件配置

persistence true

persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

listener 1883

listener 8883 0.0.0.0

password_file /etc/mosquitto/pwfile

certfile /home/server.crt

keyfile /home/server_private.key

cafile /home/ca.crt

require_certificate true

allow_anonymous false

2、生成证书,注意server的CN需要设置为服务端的IP地址

复制代码
#!/usr/bin/env bash

# CA key
openssl genrsa -out ca.key 2048
# CA csr
openssl req -new -subj "/C=CN/ST=GD/L=SZ/O=LY/OU=NSP/CN=ca" -key ca.key -out ca.csr
# CA crt
openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key -days 3650

# server key
openssl genrsa -out server_private.key 2048
# server.csr
openssl req -new -subj "/C=CN/ST=GD/L=SZ/O=LY/OU=NSP/CN=192.168.56.101" -key server_private.key -out server.csr
# server.crt
openssl x509 -req -in server.csr -out server.crt -CA ca.crt -CAkey ca.key \
-CAcreateserial -days 3650
# server.crt verify
openssl verify -CAfile ca.crt  server.crt

# client key
openssl genrsa -out client_private.key 2048
# client.csr
openssl req -new -subj "/C=CN/ST=GD/L=SZ/O=LY/OU=NSP/CN=client" -key client_private.key -out client.csr
# client.crt
openssl x509 -req -in client.csr -out client.crt -CA ca.crt -CAkey ca.key \
-CAcreateserial -days 3650
# client.crt verify
openssl verify -CAfile ca.crt  client.crt

3、执行测试命令

mosquitto_pub -d -h 192.168.56.101 -p 8883 -t "topic/test" -u admin -P admin --cafile ca.crt --cert client.crt --key client_private.key -m "are you ok" -i client

4、调试问题,Ubuntu安装的mosquitto 版本为 2.0.15,使用openssl自签服务端和客户端证书时候由于服务端证书Common Name没有设置为服务器的ip地址,出现以下服务端证书验证失败的问题。

Client client sending CONNECT

Error: host name verification failed.

OpenSSL Error[0]: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed

Error: Protocol error

相关推荐
User_芊芊君子12 分钟前
【金仓数据库征文】金仓数据库KingbaseES:在技术与人文交织中开拓信创未来
数据库·数据库平替用金仓·金仓数据库2025征文
傻啦嘿哟1 小时前
Python正则表达式:用“模式密码“解锁复杂字符串
linux·数据库·mysql
辰哥单片机设计3 小时前
JW01三合一传感器详解(STM32)
数据库·mongodb
小刘同学++3 小时前
Qt使用 SQLite 数据库的基本方法
数据库·qt·sqlite
施嘉伟6 小时前
Oracle 11g RAC ASM磁盘组剔盘、加盘实施过程
数据库·oracle
橘猫云计算机设计7 小时前
springboot基于hadoop的酷狗音乐爬虫大数据分析可视化系统(源码+lw+部署文档+讲解),源码可白嫖!
数据库·hadoop·spring boot·爬虫·python·数据分析·毕业设计
卓怡学长7 小时前
w304基于HTML5的民谣网站的设计与实现
java·前端·数据库·spring boot·spring·html5
冰^8 小时前
MySQL VS SQL Server:优缺点全解析
数据库·数据仓库·redis·sql·mysql·json·数据库开发
电商数据girl8 小时前
产品经理对于电商接口的梳理||电商接口文档梳理与接入
大数据·数据库·python·自动化·产品经理
Spring小子9 小时前
黑马点评商户查询缓存--缓存更新策略
java·数据库·redis·后端