要是有密码都是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 [] 123456@qq.com
这步走完生成了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这个协议