天天看点

mosquitto ssl/tls 设置就是这个, 要是域名ssl mosquitto配置文件 修改

要是有密码都是12345678

Common Name 的值 不能是ip,一定要是域名(切记)

先安装 openssl

yum install openssl

yum install openssl-devel

cd /etc/mosquitto

mkdir ca

cd ca

-days 我就设置36500 一百年。。。

openssl req -newkey rsa:2045 -x509 -nodes -sha256 -days 36500 -extensions v3_ca -keyout ca.key -out ca.crt

输入密码

Country Name (2 letter code) [AU]:cn

State or Province Name (full name) [Some-State]:gd

Locality Name (eg, city) []:sz

Organization Name (eg, company) [Internet Widgits Pty Ltd]:fih

Organizational Unit Name (eg, section) []:yun

就是这个, 要是域名

Common Name (e.g. server FQDN or YOUR name) []:sdw1

Email Address [] [email protected]

这步走完生成了ca的两个文件

生成不加密的服务器密钥。

openssl genrsa -out server.key 2048

生成证书签名请求以发送到CA。

openssl req -out server.csr -key server.key -new

注意

当提示您输入CN(通用名称)时,请输入服务器(或代理)的主机名或域名。

将CSR发送到CA,或用您的CA密钥对其进行签名:

openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 36500

客户

生成客户端密钥。

openssl genrsa -des3 -out client.key 2048

生成证书签名请求以发送到CA。

openssl req -out client.csr -key client.key -new

将CSR发送到CA,或用您的CA密钥对其进行签名:

openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 36500

此时在ca目录 下已经生成了server和clent的证书

修改配置文件 加上

ssl mosquitto配置文件 修改

listener 8883

cafile /etc/mosquitto/ca/ca.crt

certfile /etc/mosquitto/ca/server.crt

keyfile /etc/mosquitto/ca/server.key

#这个打开表示双向验证

require_certificate true

#如果下面这个设为true 那么数据库的用户名密码就无效了

use_identity_as_username false

注意配置文件里默认是port 1883 这是默认端口

listener 表示额外端口 可以监听多个端口

包换mqtt和websocket

如果服务端有配置ca.crt,那客户端连接时也要这个ca证书

打开表示双向验证,客户端也要带上客户端的crt,key文件才行

客户端连接里要用 SSLContext context = SSLContext.getInstance(“TLSv1.2”);

TLSv1.2这个协议