mqtt使用WebSocket over TLS(wss)握手失败

由于网页运行在https上,所以连接mqtt只能用wss,但是使用自签证书一直显示1015 TLS_HANDSHAKE,可以判断为认证阶段不通过。在MQTT.fx上面则提示证书非法。后面找了很多资料,终于在一个回到里面找到答案,就记录下来。

自签脚本如下:

#/bin/sh
# 生成自签名的CA key和证书
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -subj "/CN=192.168.100.1" -out ca.pem

# 生成服务器端的key和证书
openssl genrsa -out server.key 2048
openssl req -new -key ./server.key -out server.csr -subj "/CN=192.168.100.1"
openssl x509 -req -in ./server.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out server.pem -days 3650 -sha256

# 生成客户端key和证书
openssl genrsa -out client.key 2048
openssl req -new -key ./client.key -out client.csr -subj "/CN=192.168.100.1"
openssl x509 -req -in ./client.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out client.pem -days 3650 -sha256
  • 这里的关键在于里面的几个IP地址,需要替换成mosquitto服务器所在的IP或者域名,否则会认证失败

mosquitto 配置如下:

persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log

allow_anonymous true

# mqtt协议
listener 1883
protocol mqtt

# mqtts 协议
listener 8883
cafile /mosquitto/config/ca.pem
certfile /mosquitto/config/server.pem
keyfile /mosquitto/config/server.key
tls_version tlsv1.2

# mqtt wss协议
listener 8084
protocol websockets
cafile /mosquitto/config/ca.pem
certfile /mosquitto/config/server.pem
keyfile /mosquitto/config/server.key
tls_version tlsv1.2
  • 这里则用到了上面生成的几个文件
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容