emqx5.6创建mqtt连接器启用tls并启用验证服务器证书连接失败返回400

使用openssl生成自签名证书,emqx服务端配置双向验证,使用mqttx测试客户端连接,启用SSL/TLS,启用SSL安全,选择自签名证书,上传证书后连接成功。

通过emqx管理控制台创建mqtt连接器,启用tls并启用验证服务器证书,并上传证书后连接一致失败,msg: start_ecpool_error, pool_name: <<"connector:mqtt:mqtt_bridge_before">>, reason: {tls_alert,{bad_certificate,"TLS client: In state wait_cert at ssl_handshake.erl:2132 generated CLIENT ALERT: Fatal - Bad Certificate\n"}}

看起来是客户端验证服务端证书失败,请提供完整的服务端与客户端配置。

服务端配置

listeners.ssl.default {
  bind = "0.0.0.0:8883"
  ssl_options {
    cacertfile = "etc/certs/rootCA.crt"
    certfile = "etc/certs/server.crt"
    keyfile = "etc/certs/server.key"
    # 私钥文件受密码保护时需要输入密码
    password = "12345678"
    # ssl版本
    versions = ["tlsv1.2", "tlsv1.3"]
    # 双向认证,验证客户端证书
    verify = verify_peer
    # 如果客户端没有证书,SSL/TLS 连接将被拒绝
    fail_if_no_peer_cert = true
  }
}

客户端配置