如何解决MQTT.fx无法连接到AWS IoTMqttException
我正在尝试遵循本教程https://circuitdigest.com/tutorial/getting-started-with-amazon-aws-for-iot-projects
我一次又一次地完成了所有步骤,但是当单击MQTT.fx中的“连接”按钮时,我无法摆脱MqttException错误。
我从AWS IoT下载证书并将其保存在C:\ temp文件夹中。我还检查了MQTT.fx中的日志选项卡,您可以在下面看到它。您对解决方法有任何想法吗?
非常感谢!
2020-10-09 10:40:28,043错误--- MqttFX ClientModel: 请验证您的设置(例如,经纪人地址,经纪人港口和客户 ID)和用户凭据! org.eclipse.paho.client.mqttv3.MqttException:MqttException位于 org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:38) 〜[org.eclipse.paho.client.mqttv3-1.2.0.jar :?]在 org.eclipse.paho.client.mqttv3.internal.ClientComms $ ConnectBG.run(ClientComms.java:715) 〜[org.eclipse.paho.client.mqttv3-1.2.0.jar :?]在 java.util.concurrent.Executors $ RunnableAdapter.call(未知源) 〜[?:1.8.0_162]在java.util.concurrent.FutureTask.run(未知来源) 〜[?:1.8.0_162]在 java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201(未知 来源)〜[?:1.8.0_162]在 java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(未知 来源)〜[?:1.8.0_162]在 java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) [?:1.8.0_162]在 java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知源) java.lang.Thread.run上的[?:1.8.0_162](未知来源)[?: 1.8.0_162] 引起原因:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:PKIX路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 在以下位置找到到所需目标的有效认证路径 sun.security.ssl.Alerts.getSSLException(未知来源)〜[?:1.8.0_162] 在sun.security.ssl.SSLSocketImpl.fatal(未知来源) 〜[?:1.8.0_162]在sun.security.ssl.Handshaker.fatalSE(未知来源) 〜[?:1.8.0_162]在sun.security.ssl.Handshaker.fatalSE(未知来源) 〜[?:1.8.0_162]在 sun.security.ssl.ClientHandshaker.serverCertificate(未知来源) 〜[?:1.8.0_162]在 sun.security.ssl.ClientHandshaker.processMessage(未知来源) 〜[?:1.8.0_162]在sun.security.ssl.Handshaker.processLoop(未知 来源)〜[?:1.8.0_162]在 sun.security.ssl.Handshaker.process_record(未知来源) 〜[?:1.8.0_162]在sun.security.ssl.SSLSocketImpl.readRecord(未知 来源)〜[?:1.8.0_162]在 sun.security.ssl.SSLSocketImpl.performInitialHandshake(未知来源) 〜[?:1.8.0_162]在 sun.security.ssl.SSLSocketImpl.startHandshake(未知来源) 〜[?:1.8.0_162]在 sun.security.ssl.SSLSocketImpl.startHandshake(未知来源) 〜[?:1.8.0_162]在 org.eclipse.paho.client.mqttv3.internal.SSLNetworkModule.start(SSLNetworkModule.java:108) 〜[org.eclipse.paho.client.mqttv3-1.2.0.jar :?]在 org.eclipse.paho.client.mqttv3.internal.ClientComms $ ConnectBG.run(ClientComms.java:701) 〜[org.eclipse.paho.client.mqttv3-1.2.0.jar :?] ...另外7个原因: sun.security.validator.ValidatorException:PKIX路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 在以下位置找到到所需目标的有效认证路径 sun.security.validator.PKIXValidator.dobuild(未知来源) 〜[?:1.8.0_162]在 sun.security.validator.PKIXValidator.engineValidate(未知来源) 〜[?:1.8.0_162]在sun.security.validator.Validator.validate(未知 来源)〜[?:1.8.0_162]在 sun.security.ssl.x509trustmanagerImpl.validate(未知来源) 〜[?:1.8.0_162]在 sun.security.ssl.x509trustmanagerImpl.checkTrusted(未知来源) 〜[?:1.8.0_162]在 sun.security.ssl.x509trustmanagerImpl.checkServerTrusted(未知 来源)〜[?:1.8.0_162]在 sun.security.ssl.ClientHandshaker.serverCertificate(未知来源) 〜[?:1.8.0_162]在 sun.security.ssl.ClientHandshaker.processMessage(未知来源) 〜[?:1.8.0_162]在sun.security.ssl.Handshaker.processLoop(未知 来源)〜[?:1.8.0_162]在 sun.security.ssl.Handshaker.process_record(未知来源) 〜[?:1.8.0_162]在sun.security.ssl.SSLSocketImpl.readRecord(未知 来源)〜[?:1.8.0_162]在 sun.security.ssl.SSLSocketImpl.performInitialHandshake(未知来源) 〜[?:1.8.0_162]在 sun.security.ssl.SSLSocketImpl.startHandshake(未知来源) 〜[?:1.8.0_162]在 sun.security.ssl.SSLSocketImpl.startHandshake(未知来源) 〜[?:1.8.0_162]在 org.eclipse.paho.client.mqttv3.internal.SSLNetworkModule.start(SSLNetworkModule.java:108) 〜[org.eclipse.paho.client.mqttv3-1.2.0.jar :?]在 org.eclipse.paho.client.mqttv3.internal.ClientComms $ ConnectBG.run(ClientComms.java:701) 〜[org.eclipse.paho.client.mqttv3-1.2.0.jar :?] ...另外7个原因: sun.security.provider.certpath.SunCertPathBuilderException:无法 在以下位置找到到所需目标的有效认证路径 sun.security.provider.certpath.SunCertPathBuilder.build(未知 来源)〜[?:1.8.0_162]在 sun.security.provider.certpath.SunCertPathBuilder.engineBuild(未知 来源)〜[?:1.8.0_162]在 java.security.cert.CertPathBuilder.build(未知源) 〜[?:1.8.0_162]在 sun.security.validator.PKIXValidator.dobuild(未知来源) 〜[?:1.8.0_162]在 sun.security.validator.PKIXValidator.engineValidate(未知来源) 〜[?:1.8.0_162]在sun.security.validator.Validator.validate(未知 来源)〜[?:1.8.0_162]在 sun.security.ssl.x509trustmanagerImpl.validate(未知来源) 〜[?:1.8.0_162]在 sun.security.ssl.x509trustmanagerImpl.checkTrusted(未知来源) 〜[?:1.8.0_162]在 sun.security.ssl.x509trustmanagerImpl.checkServerTrusted(未知 来源)〜[?:1.8.0_162]在 sun.security.ssl.ClientHandshaker.serverCertificate(未知来源) 〜[?:1.8.0_162]在 sun.security.ssl.ClientHandshaker.processMessage(未知来源) 〜[?:1.8.0_162]在sun.security.ssl.Handshaker.processLoop(未知 来源)〜[?:1.8.0_162]在 sun.security.ssl.Handshaker.process_record(未知来源) 〜[?:1.8.0_162]在sun.security.ssl.SSLSocketImpl.readRecord(未知 来源)〜[?:1.8.0_162]在 sun.security.ssl.SSLSocketImpl.performInitialHandshake(未知来源) 〜[?:1.8.0_162]在 sun.security.ssl.SSLSocketImpl.startHandshake(未知来源) 〜[?:1.8.0_162]在 sun.security.ssl.SSLSocketImpl.startHandshake(未知来源) 〜[?:1.8.0_162]在 org.eclipse.paho.client.mqttv3.internal.SSLNetworkModule.start(SSLNetworkModule.java:108) 〜[org.eclipse.paho.client.mqttv3-1.2.0.jar :?]在 org.eclipse.paho.client.mqttv3.internal.ClientComms $ ConnectBG.run(ClientComms.java:701) 〜[org.eclipse.paho.client.mqttv3-1.2.0.jar :?] ...还有7个2020-10-09 10:40:28,045信息--- ScriptsController:清除控制台。 2020-10-09 10:40:28,046错误--- brokerConnectService: MqttException
解决方法
我解决了我的问题。 这是关于下载错误的证书。您可以在此处找到详细的解决方案。
在AWS IoT中创建事物后,下载所有3个证书。
如果要获取MQTT.fx必需的CA证书,则需要转到here(创建事物后,您将在AWS IoT的下载证书部分下看到此链接),然后单击 RSA 2048位密钥:Amazon Root CA 1 链接。新标签页将打开。
将此证书复制并粘贴到您的记事本中。将其命名为Amazon_Root_CA_1.pem,然后在保存时选择所有文件类型。
将所有证书放在一个文件中。我将它们放在C:\ temp文件夹下。
最后,这就是我的配置:MQTT.fx configuration
现在MQTT.fx有望运行:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。