Mosquitto websockets ERR_CONNECTION_REFUSED letencrypt

Posted

技术标签:

【中文标题】Mosquitto websockets ERR_CONNECTION_REFUSED letencrypt【英文标题】:Mosquitto websockets ERR_CONNECTION_REFUSED letsencrypt 【发布时间】:2020-08-02 20:24:41 【问题描述】:

我有一个带有 mosquitto 经纪人的 VPS 和一个托管在里面的网页。 该网页使用 websockets 在 https 上运行,我们购买了一个 .com 主机来获取letsencrypt证书。在开始时,我尝试使用 www.sslforfree.com 的证书直接指向 myweb.ovh.net 以及连接到此 url 的网页。

在那种情况下,一切都很完美,但我需要一个可以保存很长时间的证书,并让我加密我的东西,这可能是解决方案。 我创建了一个指向 web.com 的 Letsencrypt 证书,并以这种方式将该证书放入我的 mosquitto.conf 中

listener 9001
protocol websockets

certfile /etc/letsencrypt/live/web.com/cert.pem
cafile /etc/letsencrypt/live/web.com/chain.pem
keyfile /etc/letsencrypt/live/web.com/privkey.pem

allow_anonymous false

当我尝试运行我的 mosquitto 时,我在服务器端没有响应,控制台中没有消息,并且我在 Web 控制台“ERR_CONNECTION_REFUSED”中收到错误,似乎证书没有加载到服务器中正确或证书不正确。

使用 sslforfree 的证书一切正常。会不会是文件权限的问题?我完全被这个问题迷失了,我也不知道如何查看证书是否在我的服务器中正确加载。

我的蚊帐是

1596462903: Config loaded from mosquitto2.conf.
1596462903: Opening ipv4 listen socket on port 8884.
1596462903: Opening ipv6 listen socket on port 8884.
1596462903: Opening websockets listen socket on port 9001.
1596462924: New connection from 88.9.162.109 on port 8884.
1596462924: New client connected from 88.9.162.109 as crfEquipo40 (c1, k60, u'crfEquipo40').

1596462924: Sending CONNACK to crfEquipo40 (0, 0)
1596462924: Received SUBSCRIBE from crfEquipo40
1596462924:     opi40/cmd/teclado (QoS 0)
1596462924: crfEquipo40 0 opi40/cmd/teclado
1596462924: Sending SUBACK to crfEquipo40
1596462925: Received SUBSCRIBE from crfEquipo40
1596462925:     opi40/evt/hora (QoS 0)
1596462925: crfEquipo40 0 opi40/evt/hora
1596462925: Sending SUBACK to crfEquipo40
1596462925: Received SUBSCRIBE from crfEquipo40
1596463066: mosquitto version 1.4.15 terminating

如您所见,端口 9001 正在运行,但没有任何反应,我尝试使用 sslforfree 证书进行相同操作,连接正常,在端口 9001 收到消息,但使用letsencrypt证书没有响应。

在我的 javascript 控制台客户端中,我得到了下一个

还有 chrome 安全面板中的这个

【问题讨论】:

编辑问题以包含 mosquitto 的实际日志输出。还要检查 VPS 上的日期/时间是否正确 更新了问题。日期/时间与我所在的国家/地区相同,似乎是正确的 您没有包含任何实际显示错误的日志 连接被拒绝意味着您尝试连接的端口上没有任何东西在监听,或者有防火墙。 已更新。端口是开放的,因为我可以通过 web.ovh.net 访问服务器。如果我有 ovh 网关服务我没有可用的端口抛出 web.com url??? 【参考方案1】:

使用/etc/letsencrypt/live/web.com/fullchain.pem 而不是/etc/letsencrypt/live/web.com/chain.pem

【讨论】:

有时我得到相同的结果而不是 ERR_CERT_COMMON_NAME_INVALID 我得到错误 ERR_CONNECTION_REFUSED 的行为相同,在我的 mosquitto 控制台中没有消息。 ERR_CONNECTION_REFUSED 表示 Mosquito 未运行,未配置为使用您尝试连接的端口,或者防火墙阻止访问该端口。

以上是关于Mosquitto websockets ERR_CONNECTION_REFUSED letencrypt的主要内容,如果未能解决你的问题,请参考以下文章

Websockets + TLS 的 Mosquitto 配置

Ubuntu Mosquitto 代理 websocket 不工作

Paho javascript 客户端 + mosquitto Websockets + Tls

sh step-02-install-websocket-mosquitto.sh

八网页版消息推送SDK-WebSockets

Mosquitto的配置文件mosquitto.conf