У меня есть брокер Mosca MQTT, работающий на экземпляре узла, и я хотел бы зашифровать все входящие соединения с помощью SSL / TLS (протокол MQTTs), но без необходимости связывать какой-либо сертификат с подключением (я полагаю, это должно делать с самоподписанными сертификатами) так же, как работает https. Я хочу, чтобы все мои клиенты подключались только с учетными данными, указывающими протокол MQTT, и связь может быть зашифрована. Я использовал Amazon MQ как раз раньше, и вот как это работает, поэтому я хочу то же самое.
Я не могу понять, как правильно настроить Mosca для этого, я не знаю, какой сертификат я должен использовать.
Я добавил защищенное поле в конфигурации, как показано здесь
Для сертификата я попытался создать самозаверяющий сертификат, как показано здесь
Я также пытался использовать сертификаты certbot (Let's Encrypt), зарегистрированные для моего доменного имени: mq.xxx.com.
Я запускаю все на 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
}
});
Мой сервер работает и работает с простым mqtt на порту 1883, но когда я пытаюсь соединиться с ssl / tls с клиентом на порту 8883, указывающем, что сервер использует самозаверяющие сертификаты (я пробовал с MQTT.fx), это терпит неудачу поговорка: "невозможно найти действительный путь сертификации для запрошенной цели" .
Я не могу обойти эту проблему, я думаю, что клиент почему-то не может "принять" или "проверить" предоставленный сертификат. Может быть, я предоставляю неправильный ключ или сертификат для Mosca, но есть только один из всех полученных openssl или certbot. Может быть, я создал неправильно, но я следую многим учебникам по той же теме, например этот
Какой сертификат мне нужен?
Есть что-то еще с ними делать?
Спасибо.