Mosquitto 如何连接到AWS上的MOSQUITO MQTT网桥

Mosquitto 如何连接到AWS上的MOSQUITO MQTT网桥,mosquitto,Mosquitto,我已按照页面上的说明在AWS EC2上设置了MOSQUITO桥接器,以便将本地物联网设备的非TLS消息桥接到AWS物联网服务(需要TLS连接) 当登录到EC2实例时,在来回传递消息时,安装程序工作 我添加了远程clientid和凭据,并在MQTT.fx中设置了相同的值,但当我尝试从本地计算机连接时,得到了以下结果 2017-08-09 21:45:41,732 INFO --- BrokerConnectorController : onConnect 2017-08-09 21:4

我已按照页面上的说明在AWS EC2上设置了MOSQUITO桥接器,以便将本地物联网设备的非TLS消息桥接到AWS物联网服务(需要TLS连接)

当登录到EC2实例时,在来回传递消息时,安装程序工作

我添加了远程clientid和凭据,并在MQTT.fx中设置了相同的值,但当我尝试从本地计算机连接时,得到了以下结果

2017-08-09 21:45:41,732  INFO --- BrokerConnectorController      : onConnect
2017-08-09 21:45:41,734  INFO --- ScriptsController              : Clear console.
2017-08-09 21:45:41,736  INFO --- MqttFX ClientModel             : MqttClient with ID bridgeawsiot assigned.
2017-08-09 21:45:41,838 ERROR --- MqttFX ClientModel             : Error when connecting
org.eclipse.paho.client.mqttv3.MqttException: Unable to connect to server
    at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:79) ~[org.eclipse.paho.client.mqttv3-1.1.0.jar:?]
    at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:650) ~[org.eclipse.paho.client.mqttv3-1.1.0.jar:?]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
Caused by: java.net.ConnectException: Connection refused (Connection refused)
    at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:1.8.0_131]
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[?:1.8.0_131]
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[?:1.8.0_131]
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[?:1.8.0_131]
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:1.8.0_131]
    at java.net.Socket.connect(Socket.java:589) ~[?:1.8.0_131]
    at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:70) ~[org.eclipse.paho.client.mqttv3-1.1.0.jar:?]
    ... 2 more
2017-08-09 21:45:41,840 ERROR --- MqttFX ClientModel             : Please verify your Settings (e.g. Broker Address, Broker Port & Client ID) and the user credentials!
org.eclipse.paho.client.mqttv3.MqttException: Unable to connect to server
    at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:79) ~[org.eclipse.paho.client.mqttv3-1.1.0.jar:?]
    at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:650) ~[org.eclipse.paho.client.mqttv3-1.1.0.jar:?]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
Caused by: java.net.ConnectException: Connection refused (Connection refused)
    at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:1.8.0_131]
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[?:1.8.0_131]
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[?:1.8.0_131]
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[?:1.8.0_131]
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:1.8.0_131]
    at java.net.Socket.connect(Socket.java:589) ~[?:1.8.0_131]
    at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:70) ~[org.eclipse.paho.client.mqttv3-1.1.0.jar:?]
    ... 2 more
2017-08-09 21:45:41,842  INFO --- ScriptsController              : Clear console.
2017-08-09 21:45:41,843 ERROR --- BrokerConnectService           : Unable to connect to server
这是我正在使用的bridge.conf:

# AWS IoT endpoint, use AWS CLI 'aws iot describe-endpoint'
connection awsiot
address xxxxxxxxxxxxx.iot.us-east-1.amazonaws.com:8883

# Specifying which topics are bridged
topic awsiot_to_localgateway in 1
topic localgateway_to_awsiot out 1
topic both_directions both 1

# Setting protocol version explicitly
bridge_protocol_version mqttv311
bridge_insecure false

# Bridge connection name and MQTT client Id,
# enabling the connection automatically when the broker starts.
cleansession true
remote_clientid bridgeawsiot
start_type automatic
notifications false
log_type all

local_clientid bridgeawsiot ## Tried also with id different from remote_clientid
local_username localuser
local_password test123

# =================================================================
# Certificate based SSL/TLS support
# -----------------------------------------------------------------
# Path to the rootCA
bridge_cafile /etc/mosquitto/certs/rootCA.pem

# Path to the PEM encoded client certificate
bridge_certfile /etc/mosquitto/certs/cert.crt

# Path to the PEM encoded client private key
bridge_keyfile /etc/mosquitto/certs/private.key

因此,经过大量的研究和阅读文档,我发现了一个有效的配置。需要通过删除
local\u clientid
local\u username
local\u password
条目,然后在其位置添加以下两行来更改bridge.conf文件:

password_file /path/to/pw/file
listener 8883                    # for AWS, or your port number as applicable
因此,完整的bridge.conf文件将是:

# AWS IoT endpoint, use AWS CLI 'aws iot describe-endpoint'
connection awsiot
address a5d2ye3cyutpb.iot.us-east-1.amazonaws.com:8883

# Specifying which topics are bridged
topic awsiot_to_localgateway in 1
topic localgateway_to_awsiot out 1
topic both_directions both 1

# Setting protocol version explicitly
bridge_protocol_version mqttv311
bridge_insecure false

# Bridge connection name and MQTT client Id,
# enabling the connection automatically when the broker starts.
cleansession true
remote_clientid bridgeawsiot
start_type automatic
notifications false
log_type all

password_file /etc/mosquitto/pwfile
listener 8883

# =================================================================
# Certificate based SSL/TLS support
# -----------------------------------------------------------------
# Path to the rootCA
bridge_cafile /etc/mosquitto/certs/rootCA.pem

# Path to the PEM encoded client certificate
bridge_certfile /etc/mosquitto/certs/cert.crt

# Path to the PEM encoded client private key
bridge_keyfile /etc/mosquitto/certs/private.key
然后,必须通过为每个用户发出以下命令来生成密码文件,以设置密码:

$ sudo mosquitto_passwd -c /path/to/pw/file username
然后使用以下命令重新启动mosquitto:

$ sudo service mosquitto restart