Получение сообщения об ошибке при использовании SSL на моем сервере под управлением Mosquitto? - PullRequest
0 голосов
/ 03 января 2019

Я внедрил брокер Mosquitto для Ubuntu на порт 8883 и порт 1883 и не могу понять, почему я продолжаю получать ошибки, связанные с CA, показанные ниже.

Это происходит, когда я тестирую его с помощью mosquitto_pub локально на сервере и когда я использую скрипт Paho / Python в качестве клиента на моем MacBook. Мой файл mosquitto.config, команда mosquitto_pub и мои сообщения журнала mosquitto показаны ниже. Я также включил свои команды создания сертификата openssl на случай, если я что-то сделал не так.

Это мой файл mosquitto.conf

# Place your local configuration in /etc/mosquitto/conf.d/
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

#log_dest file /var/log/mosquitto/mosquitto.log
log_dest stdout

include_dir /etc/mosquitto/conf.d

log_type all

#-----------------------------------------------
#Default Listener
#-----------------------------------------------

port 8883

#------------------------------------------------
#Certificate Based SSL/TLS Support
#------------------------------------------------

cafile /../etc/mosquitto/ca_certificates/ca.crt
keyfile /../etc/mosquitto/certs/server.key
certfile /../etc/mosquitto/certs/server.crt

listener 1883

Это команда mosquitto_pub, которую я использую для проверки.

sudo mosquitto_pub -h 305.875.987.34 -t test -m "Typing this" -p 8883 --cafile /../etc/mosquitto/ca_certificates/ca.crt

Вот что пишет журнал комаров, когда я запускаю его.

1546507891: mosquitto version 1.5.5 starting
1546507891: Config loaded from /../etc/mosquitto/mosquitto.conf.
1546507891: Opening ipv4 listen socket on port 1883.
1546507891: Opening ipv6 listen socket on port 1883.
1546507891: Opening ipv4 listen socket on port 8883.
1546507891: Opening ipv6 listen socket on port 8883.
1546507929: New connection from 305.875.987.34 on port 8883.
1546507929: OpenSSL Error: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca
1546507929: Socket error on client <unknown>, disconnecting.

Это команды openssl, которые я использовал для создания ca.crt, server.crt и server.key. Я создал их в папке с именем certs.

openssl genrsa -des3 -out ca.key 2048
openssl req -new -x509 -days 1826 -key ca.key -out ca.crt
openssl genrsa -out server.key 2048
openssl req -new -out server.csr -key server.key
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 360

Затем я переместил ca.crt в /../etc/mosquitto/ca_certifications после удаления старого файла ca.crt, который я предпринял, пытаясь решить проблему. Я сделал это с помощью следующих двух команд.

sudo rm /../etc/mosquitto/ca_certifications/ca.crt
sudo mv ca.crt /../etc/mosquitto/ca_certifications

Я сделал то же самое с server.crt и server.key, за исключением того, что я поместил их в /../etc/mosquitto/certs.

Брокер, похоже, работает нормально на порту 1883.

Дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

0 голосов
/ 03 января 2019

Для начала я бы переставил вашу mosquitto.conf, чтобы сделать вещи более понятными, что связано с чем, и удалить относительные пути к вашим файлам сертификатов / ключей следующим образом:

# Place your local configuration in /etc/mosquitto/conf.d/
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

#log_dest file /var/log/mosquitto/mosquitto.log
log_dest stdout

include_dir /etc/mosquitto/conf.d

log_type all

#-----------------------------------------------
#Default Listener
#-----------------------------------------------

port 1883

#------------------------------------------------
#Certificate Based SSL/TLS Support
#------------------------------------------------
listener 8883
cafile /etc/mosquitto/ca_certificates/ca.crt
keyfile /etc/mosquitto/certs/server.key
certfile /etc/mosquitto/certs/server.crt

У меня естьпоменялись местами записи порта / прослушивателя, чтобы было очевидно, что настройка SSL связана с прослушивателем порта 8883.Я также удалил /../ из начала путей, так как это бессмысленно, так как невозможно "поднять" каталог из / "root".

Точно так же вы должны использовать прямые путидля команды mosquitto_pub.

Также, поскольку вы копируете файлы с правами root (с помощью sudo), убедитесь, что файлы cert / key доступны для чтения пользователю mosquitto.

...