- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个在节点实例上运行的 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/
我是一名优秀的程序员,十分优秀!