Нужно ли клиенту 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, которые выдают сертификаты.

У НИКАКОГО ТЕЛА не должно быть доступа к закрытому ключу, кроме брокера.

Другие вопросы по тегам