我有一个在节点实例上运行的 Mosca MQTT 代理,我想用 SSL/TLS(MQTTs 协议)加密所有传入的通信,但客户端不必将任何证书链接到连接(我猜它与 self -签名证书)就像 https 一样。我希望我的所有客户端只使用指定 MQTTs 协议的凭据进行连接,并且可以加密通信。我之前正在使用 Amazon MQ,它就是这样工作的,所以我想要同样的。
我不知道如何正确配置 Mosca 来做到这一点,我不知道我必须使用什么样的证书。
我在 ec2 (ubuntu 18) 上运行所有东西,我的网络和防火墙对 1883 和 8883 开放。我的密钥和证书位于我的项目的根目录,其中守护程序以良好的权利和所有权运行。我知道我的实例可以正确访问它们。
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 提供了错误的密钥或证书,但每个生成的 openssl 或 certbot 只有一个。也许我创建错了,但我遵循了很多关于同一主题的教程,比如这个
我需要办什么证书?
他们还有什么关系吗?
谢谢你。