Обнаружена ошибка при использовании TLS с комарами - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь использовать TLS для связи через mqtt.У меня установлена ​​Ubuntu в моей системе.Для использования TLS я создал сертификаты, используя следующую ссылку:

http://www.embedded101.com/Blogs/PaoloPatierno/entryid/366/mqtt-over-ssl-tls-with-the-m2mqtt-library-and-the-mosquitto-broker

Я могу создавать сертификаты.Но когда я присваиваю значение свойству bind_address в файле mosquitto_m2mqtt.conf и запускаю mosquitto с помощью команды mosquitto -c mosquitto_m2mqtt.conf, я получаю сообщение об ошибке, как указано в теме вопроса;то есть Error: cannot assign requested address.Пожалуйста, дайте мне знать, как решить эту проблему.

Ниже приводится содержимое файла конфигурации:

port 8883
bind_address iothdp02
cafile /etc/mosquitto/m2mqtt_ca.crt
certfile /etc/mosquitto/m2mqtt_srv.crt
keyfile /etc/mosquitto/m2mqtt_srv.key
tls_version tlsv1

Когда я запускаю команду mosquitto -c mosquitto_m2mqtt.conf -v, я получаю такую ​​же ошибку как:

1551089294: mosquitto version 1.4.8 (build date 2016-09-21 11:21:45+0530) starting
1551089294: Config loaded from mosquitto_m2mqtt.conf.
1551089294: Opening ipv4 listen socket on port 8883.
1551089294: Error: Cannot assign requested address

Редактировать 1:

Я удалил bind_address из файла конфигурации и запустил mosquitto с новым файлом конфигурации с 'mosquitto -c mosquitto_m2mqtt.conf -v'.Mosquitto запускается, но когда я запускаю команду mosquitto_sub, я получаю сообщение об ошибке, как показано ниже:

mosquitto -c mosquitto_m2mqtt.conf -v 1551172930: mosquitto version 1.4.8 (build date 2016-09-21 11:21:45+0530) starting 1551172930: Config loaded from mosquitto_m2mqtt.conf. 1551172930: Opening ipv4 listen socket on port 8883. 1551172930: Opening ipv6 listen socket on port 8883. Enter PEM pass phrase: 1551172960: New connection from 127.0.0.1 on port 8883. 1551172960: OpenSSL Error: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown 1551172960: OpenSSL Error: error:140940E5:SSL routines:ssl3_read_bytes:ssl handshake failure 1551172960: Socket error on client <unknown>, disconnecting.

В окне, которое я подписываюсь, я получаю сообщение об ошибке, как показано ниже:

mosquitto_sub -p 8883 -q 1 -t sensor/temp --cafile /etc/mosquitto/m2mqtt_srv.crt --tls-version tlsv1 -d Unable to connect (A TLS error occurred.).

1 Ответ

0 голосов
/ 25 февраля 2019

Если вы передаете имя хоста аргументу bind_address, он должен разрешиться в действительный IP-адрес, это не обязательно совпадает с выводом hostname.

Это не имеет ничего общего сНастройка TLS / сертификата - это просто то, как москит определяет, к какому адресу привязываться.

У вас есть несколько вариантов, как это исправить:

  1. удалите строку bind_address, этозаставит mosquitto прослушивать все доступные адреса
  2. . Убедитесь, что все, что вы используете в поле bind_address, преобразуется в IP-адрес, связанный с интерфейсом на машине, на которой работает брокер.Это может означать использование полного доменного имени (возможно, вам следовало бы также использовать его в сертификате брокера CN)
  3. заменить имя хоста на ip-адрес для интерфейса, который вы хотите прослушать mosquitto.
...