На моем сервере я использую mqtt-брокер на основе node.js (mosca), у которого есть сертификат SSL от Certbot.
На стороне клиента я использую решение на основе node.js в качествехорошо (mqtt.js)
Теперь мой вопрос: чтобы иметь безопасное соединение, нужно ли мне иметь свойство rejectUnauthorized: true
? Потому что я могу заставить его работать только при наличии самозаверяющего сертификата, что, конечно, не очень безопасно. При наличии обычного сертификата SSL на стороне сервера я не могу заставить его работать с rejectUnauthorized: true
, почему?
Мои параметры сервера:
const settings = {
port: 8883,
secure: {
keyPath: '/etc/letsencrypt/live/XXX/privkey.pem',
certPath: '/etc/letsencrypt/live/XXX/cert.pem',
},
https: {
port: 443,
bundle: true,
static: './',
},
};
Мои параметры подключения на стороне клиента:
const options = {
host: "XXXXXX",
port: 8883,
protocol: "mqtts",
rejectUnauthorized: true,
username: process.env.USERNAME,
password: process.env.PASSWORD,
};
Ошибка при получении:
Error: unable to verify the first certificate
at TLSSocket.onConnectSecure (_tls_wrap.js:1318:34)
at TLSSocket.emit (events.js:210:5)
at TLSSocket._finishInit (_tls_wrap.js:792:8)
at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:606:12) {
code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'
}