gpt4 book ai didi

ssl - 如何在客户端没有证书的情况下为 mqtts 配置 Mosca?

转载 作者:太空宇宙 更新时间:2023-11-03 13:59:21 25 4
gpt4 key购买 nike

我有一个在节点实例上运行的 Mosca MQTT 代理,我想使用 SSL/TLS(MQTT 协议(protocol))加密所有传入通信,但客户端不必将任何证书链接到连接(我想它必须使用自签名证书)就像 https 一样。我希望我的所有客户端仅使用指定 MQTT 协议(protocol)的凭据进行连接,并且可以对通信进行加密。我之前使用的是 Amazon MQ,这就是它的工作原理,所以我想要同样的东西。

我不知道如何正确配置 Mosca 才能这样做,我不知道我必须使用哪种证书。

  • 我在配置中添加了安全字段,如图所示here

  • 对于证书,我尝试创建一个自签名证书,如图所示 here

  • 我还尝试使用为我的域名注册的 certbot 证书 (Let's Encrypt):mq.xxx.com。

我在 ec2 (ubuntu 18) 上运行所有内容,我的网络和防火墙对 1883 和 8883 开放。我的 key 和证书位于我的项目的根目录下,守护进程以良好的权利和所有权运行。我知道我的实例可以正确访问它们。

new mosca.Server({
port: 1883,
secure: {
keyPath: "./privkey.pem",
certPath: "./cert.pem"
},
backend: {
type: 'redis',
redis: require('redis'),
host: "localhost",
port: 6379,
db: 0,
return_buffers: true,
},
persistence: {
factory: mosca.persistence.Redis
}
});

我的服务器正在运行并在端口 1883 上使用简单的 mqtt,但是当我尝试通过端口 8883 上的客户端连接 ssl/tls 指定服务器使用自签名证书(我尝试使用 MQTT.fx)时,它失败了说:“无法找到请求目标的有效认证路径”

我无法解决这个问题,我认为客户无法“接受”或“验证”所提供的证书。也许我向 Mosca 提供了错误的 key 或证书,但每个生成的 openssl 或 certbot 中只有一个。也许我创建错误,但我遵循了很多关于同一主题的教程,例如 this one

我需要做什么证书?

他们还有什么事要做吗?

谢谢。

最佳答案

如果您使用的是自行创建的证书,那么客户将需要一份签署经纪人证书的证书副本。该证书将被添加到可信来源列表中,以便它可以证明经纪人是它声称的那个人。

如果您不想/不能分发证书,那么您将需要为您的代理使用由 CA(证书颁发机构)颁发的证书,该证书是您已经拥有的签名证书(捆绑到您安装的操作系统/客户端中)正在使用)。

Lets Encrypt 签名证书现在应该捆绑到大多数操作系统中,但它们也由 IdenTrust 再次交叉签名,他们的证书应该与大多数操作系统捆绑在一起。如果您在使用 Lets Encrypt 证书时遇到问题,那么我建议您提出一个新问题,详细说明您如何使用这些证书配置 mosca 以及如何配置 MQTT.fx 的更多详细信息以及您收到的错误。

关于ssl - 如何在客户端没有证书的情况下为 mqtts 配置 Mosca?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55531154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com