Как настроить Hivemq с проверкой подлинности сертификата клиента
Я пытаюсь настроить HiveMQ с проверкой подлинности сертификата клиента более двух дней, и я не пошел дальше, чем несколько (бесполезных) ошибок.
Я создал сертификаты в соответствии с руководством. Не работает, всякий раз, когда я пытаюсь соединиться с mosquitto_pub, я получаю сообщение об ошибке: произошла ошибка TLS.
Я попытался создать сертификаты, используя это руководство. (TL;DR) Вот шаги:
Generate device key and keystore
keytool -genkey -alias iotdevice1 -keyalg RSA -keypass devicepass -storepass devicepass -keystore iot_device_keystore.jks -storetype jks
Export device certificate from keystore
keytool -export -alias iotdevice1 -storepass devicepass -file iotdevice1.cer -keystore iot_device_keystore.jks
Add device certificate into broker truststore
keytool -import -v -trustcacerts -alias iotdevice1 -file iotdevice1.cer -keystore hivemq-trust-store.jks -keypass devicepass -storepass brokerpass -storetype jks
Generate broker key and keystore
keytool -genkey -alias hivemq -keyalg RSA -keypass brokerpass -storepass brokerpass -keystore hivemq.jks -storetype jks
Export broker certificate
keytool -export -alias hivemq -storepass brokerpass -file hivemq.cer -keystore hivemq.jks
У меня нет магазина доверия устройств
Add the certificate into device truststore
keytool -import -v -trustcacerts -alias broker -file hivemq.cer -keystore iot_device_truststore.jks -keypass brokerpass -storepass brokerpass -storetype jks
Затем я экспортировал сертификаты из хранилища ключей устройства, используя
keytool -importkeystore -srckeystore iot_device_keystore.jks -destkeystore keystore.p12
-deststoretype PKCS12 -srcalias <jkskeyalias> -deststorepass devicepass
-destkeypass devicepass
Затем преобразовать его в формат PEM
openssl pkcs12 -in keystore.p12 -nodes -nocerts -out key.pem
openssl x509 -inform der -in iotdevice1.cer -out iotdevice1.pem
Когда я использую
openssl s_client -connect server:port -CAfile hivemq.pem -cert iotdevice1.pem -key key.pem
Он подключается (отображается в веб-интерфейсе HiveMQ), проверяет ключи и возвращает код подтверждения Verify: 0 (хорошо)
Мне требуется клиент-сертификат-аутентификация в config.xml.
Когда я использую что-то кроме openssl, я получаю ошибки.
Основная проблема в том, что ESP-32 не может подключиться. Мне нужно предоставить сертификаты в формате pem (как я сделал с openssl), и он должен подключиться. Это не так. Нет кода ошибки или чего-либо еще.
При открытии страницы с помощью Firefox я получаю SSL_ERROR_BAD_CERT_ALERT, но для чего?
У меня немного нет решений по этому вопросу. Я работал с сертификатами раньше, но не могу вспомнить, что это было большой проблемой, чтобы правильно его настроить.
Немного не по теме: Для группы openssl и keytool: Make проще использовать SSL/TLS. Многие разработчики перестают пытаться настроить его, потому что это выглядит невозможным для установки (из-за этих проблем)