Соединение с mosquitto не удалось с кодом ошибки «ошибка:1408F10B: процедуры SSL: ssl3_get_record: неправильный номер версии»
У меня проблемы с настройкой Mosquitto с SSL. Все работает нормально в виде открытого текста (1883), но когда я настраиваю SSL и тестирую его (8883), я получаю следующие ошибки:
mosquitto_pub --host 127.0.0.1 --port 8883 --topic test -m "bankai" --key /etc/mosquitto/certs/server.key --cert /etc/mosquitto/certs/server.crt
Error: The connection was lost.
1659527333: Client connection from 127.0.0.1 failed: error:1408F10B:SSL routines:ssl3_get_record:wrong version number
mosquitto_pub --host my.server.org --port 8883 --topic test -m "bankai" --key /etc/mosquitto/certs/server.key --cert /etc/mosquitto/certs/server.crt
Error: The connection was lost.
1659527333: Client connection from 147.xxx.yyy.zzz failed: error:1408F10B:SSL routines:ssl3_get_record:wrong version number
mosquitto_pub --host 127.0.0.1 --port 8883 --topic test -m "bankai" --cafile /etc/mosquitto/ca_certificates/ca.crt
Error: A TLS error occurred.
1659527858: New connection from 127.0.0.1 on port 8883.
mosquitto_pub --host my.server.org --port 8883 --topic test -m "bankai" --cafile /etc/mosquitto/ca_certificates/ca.crt
Error: The connection was lost.
1659528143: OpenSSL Error: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca
1659528143: Socket error on client <unknown>, disconnecting.
1659528184: New connection from 147.xxx.yyy.zzz on port 8883.
Мне очень нужна ваша помощь, потому что я не знаю, что теперь делать! Заранее спасибо :)
На стороне конфигурации SSL, в соответствии с документацией:
- я создал пару ключей CA
openssl genrsa -out ca.key 2048
- я создал сертификат CA и использовал ca.key для его подписи
openssl req -new -x509 -days 3650 -extensions v3_ca -key ca.key -out ca.crt -subj "/C=FR/ST=Occitanie/L=Toulouse/O=MyCompany/OU=MyUnit/CN=my.server.org"
- я создал пару ключей для сервера MQTT
openssl genrsa -out server.key 2048
- я создал файл CSR, используя server.key
openssl req -new -out server.csr -key server.key -subj "/C=FR/ST=Occitanie/L=Toulouse/O=MyCompany/OU=MyUnit/CN=my.server.org" -addext subjectAltName=IP:147.xxx.yyy.zzz,IP:192.168.xxx.yyy,IP:127.0.0.1,DNS:my.server.org,DNS:myhostname,DNS:localhost
- я использовал ca.key для подписи server.csr и создания server.crt
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650
- я скопировал файлы ca.crt, server.crt и server.key в соответствующие папки mosquitto.
cp /etc/ssl/mycerts/mosquitto/ca.crt /etc/mosquitto/ca_certificates/ca.crt
cp /etc/ssl/mycerts/mosquitto/server.crt /etc/mosquitto/certs/server.crt
cp /etc/ssl/mycerts/mosquitto/server.key /etc/mosquitto/certs/server.key
- я создал и настроил файл /etc/mosquitto/conf.d/ssl.conf как:
#
# configuration mosquitto SSL
#
# port
listener 8883
# ssl files
cafile /etc/mosquitto/ca_certificates/ca.crt
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
# tls options
require_certificate true
tls_version tlsv1.2
- я перезапустил службу Mosquitto
systemctl restart mosquitto.service
systemctl status mosquitto.service
● mosquitto.service - Mosquitto MQTT v3.1/v3.1.1 Broker
Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-07-26 14:12:48 CEST; 15s ago
Docs: man:mosquitto.conf(5)
man:mosquitto(8)
Main PID: 30769 (mosquitto)
Tasks: 1 (limit: 2059)
CGroup: /system.slice/mosquitto.service
└─30769 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
Jul 26 14:12:48 raspberrypi systemd[1]: Starting Mosquitto MQTT v3.1/v3.1.1 Broker...
Jul 26 14:12:48 raspberrypi mosquitto[30769]: Loading config file /etc/mosquitto/conf.d/ssl.conf
Jul 26 14:12:48 raspberrypi systemd[1]: Started Mosquitto MQTT v3.1/v3.1.1 Broker.
- я проверил, что порт 8883 прослушивается
netstat -plunt | grep mosquitto
tcp 0 0 0.0.0.0:8883 0.0.0.0:* LISTEN 30769/mosquitto
tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN 30769/mosquitto
tcp6 0 0 :::8883 :::* LISTEN 30769/mosquitto
tcp6 0 0 :::1883 :::* LISTEN 30769/mosquitto
- я создал пару ключей для клиента
openssl genrsa -des3 -out client.key 2048
- я создал файл CSR, используя client.key
openssl req -new -out client.csr -key client.key -subj "/C=FR/ST=Occitanie/L=Toulouse/O=MyCompany/OU=MyUnit/CN=147.xxx.yyy.zzz"
- я использовал ca.key для подписи client.csr и создания client.crt
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 3650