Ответ 1
Здесь есть небольшой путеводитель, но он не говорит много: http://mosquitto.org/man/mosquitto-tls-7.html
Вам необходимо установить следующие параметры: CERTFILE файл_ключа cafile
Они могут быть сгенерированы с помощью команд в приведенной выше ссылке. Но проще использовать этот script: https://github.com/owntracks/tools/blob/master/TLS/generate-CA.sh
После запуска script и изменения конфигурации он может выглядеть примерно так:
listener 8883
cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/hostname.localdomain.crt
keyfile /etc/mosquitto/certs/hostname.localdomain.key
Если mosquitto говорит Unable to load server key file
, это означает, что у пользователя, на котором выполняется mosquitto, нет разрешения на чтение файла. Даже если вы запустите его как root, брокер может начать как другой пользователь, например, москит. Чтобы решить эту проблему, например, chown mosquitto:root keyfile
Для подключения к брокеру клиенту потребуется файл ca.crt. Если вы этого не сделаете, брокер скажет что-то вроде:
Ошибка OpenSSL: ошибка: 1408F10B: процедуры SSL: SSL3_GET_RECORD: неправильный номер версии
Чтобы предоставить команду mosquitto_sub, используйте --cafile pathToCaCrt
. Ca.crt может быть распределен с клиентами, и он будет убедиться, что сервер, к которому он подключен, на самом деле является правильным сервером.
Флаг --insecure
mosquitto_sub не позволяет клиенту принимать все сертификаты (например, с помощью wget или аналогичных), он просто позволяет сертификату не подключать хост, к которому вы подключаетесь общим именем. Поэтому вы должны убедиться, что ваш сертификат имеет хост вашего брокера как общее имя.