AWS IOT Регистрация сертификатов в режиме реального времени

Я интегрирую JITR, следуя этой статье.

https://aws.amazon.com/blogs/iot/just-in-time-registration-of-device-certificates-on-aws-iot/

Я сделал все эти шаги и смог аутентифицировать сертификат через командную строку «mosquitto_pub».

В первый раз, когда я запускаю команду «mosquitto_pub», она вызывает функцию lambda для авторизации и прикладывает политику и второй раз успешно публикует сообщение для IOT.

Вот команда, которую я использую.

mosquitto_pub --cafile ../root.cert --cert hassanAndCACert.crt --key hassan.key -h <###>.iot.us-east-1.amazonaws.com -p 8883 -q 1 -t topic5 -i 123456789 --tls-version tlsv1.2 -m '{"hello":"3"}' -d 

Но когда я пытаюсь аутентифицировать это в SDK для Android, я получаю ошибку «рукопожатия». Вот исключение, которое я получаю.

MqttException (0) – javax.net.ssl.SSLHandshakeException: Handshake failedat org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException (ExceptionHelper.java:38) в org.eclipse.paho.client.mqttv3.internal. ClientComms $ ConnectBG.run (ClientComms.java:664) в java.lang.Thread.run (Thread.java:818) Вызвано: javax.net.ssl.SSLHandshakeException: Handshake failedat com.android.org.conscrypt.OpenSSLSocketImpl. StartHandshake (OpenSSLSocketImpl.java:441) в org.eclipse.paho.client.mqttv3.internal.SSLNetworkModule.start (SSLNetworkModule.java:93) в org.eclipse.paho.client.mqttv3.internal.ClientComms $ ConnectBG.run ( ClientComms.java:650) … 1 moreCaused by: javax.net.ssl.SSLProtocolException: квитирование SSL завершено: ssl = 0xb91e9b40: ошибка в библиотеке SSL, обычно протокол errorerror: 100c5416: процедуры SSL: ssl3_read_bytes: SSLV3_ALERT_CERTIFICATE_UNKNOWN (внешний / Boringssl / src / ssl / s3_pkt.c: 972 0xb9215530: 0x00000001) на com.android.org.conscrypt.NativeCrypto.SSL_do_handshake (собственный метод) На com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake (OpenSSLSocketImpl.java:353)

Интересно, что если сертификат устройства уже активен, и мы пытаемся опубликовать сообщение через android, он будет опубликован успешно. Единственная проблема заключается в аутентификации сертификата при первом вызове. Если мой код неисправен, он не должен отправлять сообщение против активированных сертификатов.

Разница, которую я вижу между вызовом mosquitto и андроидным кодом, заключается в том, что mosquitto создает единую команду для подключения и публикации сообщения, где PAHO-MQTT в AWS SDK необходимо сначала подключить до публикации, и я получаю исключение в 'connect ». Я даже не получал никаких журналов в журналах AWS.

Возможные причины

Подтверждение SSL / TLS может быть выполнено по различным причинам, а не только по проверке сертификатов.

Это может быть для:

  • Не использовать одни и те же номера шифров
  • Не использовать версии SSL
  • Проверка сертификата
  • Намерение изменить версию TLS
  • Другие вопросы

Лучший способ выяснить, в чем заключается ваша проблема – установить Wireshark и просмотреть сообщения об установлении связи. Затем на основе сообщения о предупреждении SSL, отправленного с сервера на клиент, вы можете получить дополнительную информацию о сбое квити SSL, где конкретно это произошло.

Возможное решение

  • Решение № 1: Эта ссылка также может помочь: Получено фатальное предупреждение: handshake_failure через SSLHandshakeException
  • Решение № 2: Не могли бы вы попытаться обновить хранилище ключей для своего приложения для Android?

Полезные ресурсы

Intereting Posts
Поля LinearLayout, RelativeLayout и т. Д. Работают не так, как ожидалось Listview не обновляет фрагмент с вкладками viewpager Почему findFragmentById возвращает старый фрагмент перед вызовом для замены FragmentLayout? Проблема сборки Gradle: обновление Quickblox и httpclient на последних Android SDK23 Как EditText может принимать только значение integer или float? Неожиданное значение из nativeGetEnabledTags: 0 «Дооснащение» неспособно создать адаптер вызова OverridePendingTransition показывает вторую активность слишком быстро Как программно отображать / скрыть навигационный ящик Можно ли проверить законность установки платного Android-приложения, проверив getInstallerPackageName? Изменение цвета подчеркивания в андроиде Как отобразить определенное значение в строке поиска по умолчанию? Bluetooth не работает в Android x86 на VirtualBox Android ActionBar не меняет цвет фона Закрытое соединение удаленного хоста во время рукопожатия: сертификат Burp на Android