【问题标题】:MQTT.fx can't connect to AWS IoT (MqttException)MQTT.fx 无法连接到 AWS IoT (MqttException)
【发布时间】:2021-01-24 08:26:42
【问题描述】:

我正在尝试学习本教程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 客户端模型: 请验证您的设置(例如经纪商地址、经纪商端口和客户端) 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(未知来源) [?:1.8.0_162] 在 java.lang.Thread.run(Unknown Source) [?: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(Unknown 来源)~[?: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(Unknown 来源)~[?: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(Unknown 来源)~[?: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(Unknown 来源)~[?: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(Unknown 来源)~[?: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 INFO --- ScriptsController:清除控制台。 2020-10-09 10:40:28,046 错误 --- BrokerConnectService: MqttException

【问题讨论】:

  • "sun.security.provider.certpath.SunCertPathBuilderException: 无法找到请求目标的有效证书路径" -- 从外观上看,它找不到您的 SSL 证书。

标签: amazon-web-services mqtt iot aws-iot


【解决方案1】:

我解决了我的问题。 这是关于下载错误的证书。您可以在这里找到详细的解决方案。

在 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 有望运行 :)

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 2018-01-25
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    相关资源
    最近更新 更多