Нужно ли клиенту MQTT иметь тот же ключ, который используется брокером MQTT для TLS?
Я использую брокер node.js mosca MQTT и пакет mqtt node.js для реализации клиента mqtt.
https://github.com/mcollina/mosca
https://www.npmjs.com/package/mqtt
Я хочу реализовать MQTT поверх TLS. Предположим, что брокер mosca MQTT использует tls-cert.pem и tls-key.pem. Необходимо ли клиенту mqtt использовать один и тот же сертификат и ключ, чтобы иметь возможность подключиться к этому брокеру MQTT?
Брокер mosca MQTT запускался как автономный, используя команду ниже;
mosca --key ./tls-key.pem --cert ./tls-cert.pem --http-port 3000 --http-bundle --http-static ./ | pino
Когда веб-браузер, работающий по протоколу HTTPS, общается с веб-сервером, работающим по протоколу HTTPS, веб-браузеру не нужно знать сертификат и ключ. Интересно, относится ли это к mqtt.
1 ответ
Для базового безопасного соединения клиенту необходимо знать только сертификат CA, используемый для подписи сертификата брокера. Он использует это, чтобы доказать себе, что брокер - это тот, кем он себя считает.
Если вы используете самозаверяющий сертификат (как я полагаю, вы), то сертификат CA совпадает с сертификатом брокера, поэтому и клиент, и брокер будут иметь один и тот же сертификат.
Веб-браузеры имеют встроенный список сертификатов CA, которые охватывают большинство общедоступных CA, которые выдают сертификаты.
У НИКАКОГО ТЕЛА не должно быть доступа к закрытому ключу, кроме брокера.