java使用TLS连接emqx 添加个签证书授信凭证扔异常

环境

  • EMQX 版本: 5.0.26
  • 操作系统版本:centos7

重现此问题的步骤

  1. 单节点emqx部署开启TLS双向认证, MQTTX工具能通过.pem证书正常连接
  2. 将.pem添加到java项目, 根据官网文档提供的代码创建 SSLSocketFactory使用TLSv1.2连接emqx服务器
  3. 因连接提示异常 PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target, 然后按网上文章在jdk安装目录添加授信凭证个签文件, 文章是需要 个签文件 .cer后缀文件, emqx5.0个签文件都是 .pem 所以再用命令合并 .p12文件, 但还是报相同异常


预期行为

预期应该是 java代码能正常连接emqx服务器, 使用mqttx工具是能通过个签文件进行SSL连接的

实际行为

实际发生了连接报错, dashbord控制台也没显示连接

image

感谢反馈,问题描述很清晰!

Java 的 TLS 链接可以参考我们提供的实例程序:https://github.com/emqx/MQTT-Client-Examples/tree/master/mqtt-client-Java

大佬, 我的代码就是 这个案例代码TLS双向认证 MqttTwoWayTlsSample这个类的代码,但是连接提示异常, 然后网上查文章说是 个签证书需要jdk配置授信, 配置了还是提示这个异常, 如果使用单向认证连接是没问题的