• 使用mqtt+ssl加密 WebSocket 客户端连接 MQTT 服务器以及ws+wss协议


    上篇用TLS/SSL保证EMQ的网络传输安全讲了使用自签ca加密MQTT传输数据,如果mqtt用在web端,如何使用ssl、tsl加密?

    1、web客户端

    // 引入mqtt.min.js
    // 将在全局初始化一个 mqtt 变量
        //console.log(mqtt);
    
        // 连接选项
        const options = {
            connectTimeout: 4000, // 超时时间
            // 认证信息
            username: 'xiaoming',
            password: '123456',
    
        };
    
        // ws是普通通讯,端口8083;wss是加密通讯,必须用域名连接,端口是8084
        // const client = mqtt.connect('ws://192.168.0.43:8083/mqtt', options);
        const client = mqtt.connect('wss://www.test.com:8084/mqtt', options);
    
        // client.
        client.on('connect', (error) => {
            console.log('链接成功:', error)
        });
        client.on('reconnect', (error) => {
            console.log('正在重连:', error)
        });
        
        client.on('error', (error) => {
            console.log('连接失败:', error)
        });
    
        // 订阅列表
        client.subscribe('pub', { qos: 2 });
        // 监听接收消息事件
        client.on('message', (topic, message) => {
            // console.log('收到来自', topic, '的消息', message.toString());
    
        });
        

    2、EMQX服务端修改配置文件./emqx/etc/emqx.conf

    ## See: listener.ssl.$name.keyfile
    ##
    ## Value: File
    listener.wss.external.keyfile = etc/certs/MyEMQ1.key
    ## listener.wss.external.keyfile = etc/certs/emqx.key
    
    ## Path to a file containing the user certificate.
    ##
    ## See: listener.ssl.$name.certfile
    ##
    ## Value: File
    listener.wss.external.certfile = etc/certs/MyEMQ1.pem
    ## listener.wss.external.certfile = etc/certs/emqx.pem
    
    ## Path to the file containing PEM-encoded CA certificates.
    ##
    ## See: listener.ssl.$name.cacert
    ##
    ## Value: File
    listener.wss.external.cacertfile = etc/certs/MyRootCA.pem
    ## listener.wss.external.cacertfile = etc/certs/my_root_ca.pem

    3、注意:把之前生成的ca根证书安装到本地计算机和浏览器上,重启浏览器即可使用ssl加密连接web客户端和EMQX服务器

    参考:https://www.jianshu.com/p/4fd95cae1a9c

  • 相关阅读:
    《Java练习题》Java习题集四
    《Java基础知识》Java 泛型详解
    《Java基础知识》Java正则表达式
    《Java基础知识》Java IO流详解
    《Java基础知识》Java集合(Map)
    51nod 1191:消灭兔子 贪心+优先队列
    51nod 1430:奇偶游戏 博弈
    51nod 1429:巧克力
    POJ 1423:Big Number 求N的阶乘的长度 斯特林公式
    51nod 1103:N的倍数 抽屉原理
  • 原文地址:https://www.cnblogs.com/yangyangming/p/13329918.html
Copyright © 2020-2023  润新知