Ошибка рукопожатия Mosquitto OpenSSL.

У меня есть брокер Mosquitto 1.4.4, размещенный в CentOs 6.7.

Следуя документации mosquitto (http://mosquitto.org/man/mosquitto-tls-7.html) и https://stackoverflow.com/questions/26657319/how-do-you-set-up-encrypted-mosquitto-broker-like-a-webpage-which-has.-https

Я попытался включить зашифрованное соединение между клиентом и брокером mosquitto и запустил брокера с включенным TLS.

mosquitto version 1.4.4 (build date 2015-09-24 08:08:55+0000) starting
Config loaded from mosquitto.conf.
Opening ipv4 listen socket on port 8883.
Opening ipv6 listen socket on port 8883

После распространения сертификата центра сертификации (ca.crt) я попытался запустить тестовый раунд с mosquitto_pub в lib_mosquitto, используя команду

mosquitto_pub -h x.x.x.x -p 8883 -t topic -m message --cafile ca.crt

то, что я получаю от брокера комаров, это

New connection from y.y.y.y on port 8883.
OpenSSL Error: error:140780E5:SSL routines:SSL23_READ:ssl handshake failure
Socket error on client <unknown>, disconnecting.

Что можно исправить? Где я ошибся?


person Dhanushka Dolapihilla    schedule 06.10.2015    source источник
comment
Stack Overflow - это сайт для вопросов по программированию и разработке. Этот вопрос кажется не по теме, потому что он не о программировании или разработке. См. Какие темы можно задать здесь в Справочном центре. Возможно, лучше было бы суперпользователь или сбой сервера просить. Также см. Где я могу задать вопросы о Dev Ops?.   -  person jww    schedule 06.10.2015
comment
Я не был уверен, что это ошибка клиента libmosquitto openssl. На самом деле я разместил его здесь, так как на serverfault не было тегов для mosquitto или mqtt. Виноват. Тем не менее я понимаю, что это неправильный форум. Спасибо.   -  person Dhanushka Dolapihilla    schedule 07.10.2015


Ответы (1)


Самая частая причина сбоя, которую я здесь видел, - это плохо настроенные сертификаты. Я бы предложил отладку с помощью клиента openssl. Это должно дать вам лучшее представление о том, в чем проблема.

openssl s_client -connect x.x.x.x:8883 -CAfile ca.crt

Вы также можете попробовать проверить на другом сервере, чтобы убедиться, что клиент работает нормально.

wget http://test.mosquitto.org/ssl/mosquitto.org.crt
mosquitto_pub -h test.mosquitto.org -p 8883 -t topic -m message --cafile mosquitto.org.crt
person ralight    schedule 06.10.2015
comment
openssl s_client следует вызывать с -tls1 -servername <server name>, чтобы гарантировать использование TLS и SNI. Отсутствие TLS и SNI на практике вызывает проблемы. См., Например, Программное обеспечение для мониторинга в зависимости от того, не работает ли openssl на ssl-сайтах cloudflare в списке рассылки пользователей OpenSSL. Кроме того, вам не следует тратить время на вопросы, в которых OP скрывает важную информацию, например имя сервера. Мы не можем проверить конфигурации или проверить предлагаемые исправления. - person jww; 06.10.2015
comment
Клиент @ralight openssl работает нормально. Проблема должна быть в клиенте libmosquitto. Собираюсь опробовать других клиентов. - person Dhanushka Dolapihilla; 07.10.2015
comment
@jww Я согласен с тем, что это не вопрос программирования (я просто ответил автоматически, не задумываясь о том, где был вопрос), но остальная часть вашего комментария в этом случае не нужна - рассматриваемый сервер когда-либо поддерживал только TLS, а не SSL, и не поддерживает SNI. - person ralight; 07.10.2015