zloi
26 февраля 2019 г. 20:30

SSL на Android

SSL, Android, qt

Добрый день! Подскажите пожалуйста, при запуске андроид приложения пишет: qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed, но когда запускаю на компе все отлично.

P.S. вывод qDebug() « QSslSocket::supportsSsl() « QSslSocket::sslLibraryBuildVersionString() « QSslSocket::sslLibraryVersionString();
(android) false "OpenSSL 1.0.2p 14 Aug 2018" ""
(desktop) true "OpenSSL 1.0.2p 14 Aug 2018" "OpenSSL 1.0.2n 7 Dec 2017"

5

Вам это нравится? Поделитесь в социальных сетях!

19
Evgenii Legotckoi
  • 26 февраля 2019 г. 20:34
  • (ред.)

Добрый день.

OpenSSL хоть и используется в Qt, но не является частью библиотеки и не поставляется в пакете разработки Qt. Как я понимаю, это связано с некоторыми юридическими моментами.

В документации Qt имеется описание настройки OpenSSL для использования в Android APK.

Посмотрите эту документацию на Qt

    zloi
    • 26 февраля 2019 г. 20:43

    Смотерл эту статью, но честно говоря мало, что понял и как видимо на описываются действия для linux,а у меня windows

      Evgenii Legotckoi
      • 26 февраля 2019 г. 20:53

      Я думаю, что скрипт универсальный, там есть пометки с информацией для Windows

      Посмотрите вот эту часть

      1. ANDROID_NDK_ROOT: /home/user1/android-ndk-r10d
      2. ANDROID_ARCH: arch-arm64
      3. ANDROID_EABI: aarch64-linux-android-4.9
      4. ANDROID_API: android-21
      5. ANDROID_SYSROOT: /home/user1/android-ndk-r10d/platforms/android-21/arch-arm64
      6. ANDROID_TOOLCHAIN: /home/user1/android-ndk-r10d/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin
      7. FIPS_SIG:
      8. CROSS_COMPILE: aarch64-linux-androideabi-
      9. ANDROID_DEV: /home/user1/android-ndk-r10d/platforms/android-21/arch-arm64/usr

      Полагаю, что здесь просто нужно заменить пути (В скрипте там переменные именованные, думаю, что можно просто переписать все эти переменные для пути NDK)

      1. ANDROID_NDK_ROOT: C:/path/to/ndk/android-ndk-r10d
      2. ANDROID_ARCH: arch-arm64
      3. ANDROID_EABI: aarch64-linux-android-4.9
      4. ANDROID_API: android-21
      5. ANDROID_SYSROOT: C:/path/to/ndk/android-ndk-r10d/platforms/android-21/arch-arm64
      6. ANDROID_TOOLCHAIN: C:/path/to/ndk/android-ndk-r10d/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin
      7. FIPS_SIG:
      8. CROSS_COMPILE: aarch64-linux-androideabi-
      9. ANDROID_DEV: C:/path/to/ndk/android-ndk-r10d/platforms/android-21/arch-arm64/usr

      Также для сборки OpenSLL нужно использовать perl v5.14 c библиотекой msys.

      Ещё есть инофрмация о hosts на 107 строке, полагаю, что имелся ввиду этот скрипт. То есть должно быть достаточно внимательно просмотреть весь скрипт, установить необходимые пакеты и поправить переменные в нужных местах.

        Михаиллл
        • 30 июля 2019 г. 11:57

        еще тут есть сборка для андроид https://github.com/lynx570/android_openssl/tree/5.12.4_5.13.0

          ВС
          • 8 августа 2019 г. 19:35
          • (ред.)

          Всем Привет. Намучался я с этим openssl. Пробую перекомпилировать свое приложение на 5.13 , и вылазит QSslSocket::connectToHostEncrypted: TLS initialization failed.
          OpenSSl в проект подключил от сюда .
          Эта строка
          qDebug() << QSslSocket::supportsSsl() << QSslSocket::sslLibraryBuildVersionString() << QSslSocket::sslLibraryVersionString();
          выводит false "OpenSSL 1.1.1b 26 Feb 2019" ""
          Хотя если рапоковать свою апк и посмотреть версию openssl то получим OpenSSL 1.1.1c 28 May 2019
          Может кто сталкивался с такой проблеммой.
          OS Ubuntu 18.04 компилирую под андройд

            Evgenii Legotckoi
            • 9 августа 2019 г. 13:35

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

              ВС
              • 9 августа 2019 г. 16:28

              ПРоверил приложение на андройд 6 -работает. А на 5.1 не работает. Видимо андрой 5.1 уже не потдерживает openssl 1.1.1c

                Evgenii Legotckoi
                • 9 августа 2019 г. 16:31

                Скорее, ещё не поддерживат. версия b является более ранней.

                  Михаиллл
                  • 24 апреля 2020 г. 13:36

                  Попробовал старое решение https://github.com/lynx570/android_openssl/tree/5.12.4_5.13.0 но оно почему-то не работает. Что же делать?

                    Evgenii Legotckoi
                    • 24 апреля 2020 г. 13:40
                    • (ред.)

                    А у вас какая версия Qt? В репозитории написано, что это для Qt 5.12.4 и 5.13.0, причём в изначальном репозитории, форком которого является тот, что вы указали. А тот, что указали вы так вообще уже 10 месяцев как не обновлялся. Вам следует посмотртеь изначальный репозиторий

                      Михаиллл
                      • 24 апреля 2020 г. 13:48

                      У меня 5,14. Похоже нужно или установить старую версию, или найти новую сборку

                        Михаиллл
                        • 24 апреля 2020 г. 16:03

                        А с новой андроид студией старые версии qt не работаю, но я читал что у людей подобное решение работает с 14 версией qt. Я поместил папку android_openssl-master в свой проект и добавил в проект файл openssl.pri. Скажите пожалуйста, что я упускаю.

                          Михаиллл
                          • 24 апреля 2020 г. 17:16

                          Может быть вы знаете как правильно собрать OpenSSL из исходников

                            Evgenii Legotckoi
                            • 24 апреля 2020 г. 17:19

                            ни разу не собирал ((

                              A
                              • 1 июня 2020 г. 21:02

                              Возьмите этот репозиторий, он предлагается в официальной документации qt
                              https://github.com/KDAB/android_openssl

                                Михаиллл
                                • 1 июня 2020 г. 21:12

                                Я видел его, только там макс 13-й, а сейчас вышел уже 15,0, но они не спешет сделать сборки.
                                Помогло только добавление других сборок, но не могу их прикрепить, т.к. они весят больше 1 мб.

                                  A
                                  • 1 июня 2020 г. 21:26
                                  • (ред.)
                                  • Ответ был помечен как решение.

                                  у меня стоит версия Qt 5.14.2. В настройках android поставил openssl из коробки, и этот прроект автоматически стянулся.
                                  Достаточно было только добавить в .pro-файл строку после этого и все работает
                                  android: include($$(HOME)/Android/Sdk/android_openssl/openssl.pri)

                                    zloi
                                    • 16 августа 2020 г. 20:22

                                    Наконец-то удалось решить проблему. Проблема была в суфиксах библиотек, обзятельно нужно добавлять суфик _1_1.so иначе andorid будет загружать версию _1_0.so, что естественно не подходит. Вопрос закрыт, всем спасибо)

                                      zloi
                                      • 19 августа 2020 г. 7:57
                                      • (ред.)

                                      Решил проблему, взял данный репозиторий (https://github.com/KDAB/android_openssl), но необходимо указавать суфикс _1_1 в имени файлах библиотек (например: libssl_1_1.so), без этого суфикса android будет подгружать свои библиотеки.

                                        Комментарии

                                        Только авторизованные пользователи могут публиковать комментарии.
                                        Пожалуйста, авторизуйтесь или зарегистрируйтесь
                                        • Последние комментарии
                                        • IscanderChe
                                          12 апреля 2025 г. 17:12
                                          Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
                                        • AK
                                          1 апреля 2025 г. 11:41
                                          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                                        • Evgenii Legotckoi
                                          9 марта 2025 г. 21:02
                                          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                                        • VP
                                          9 марта 2025 г. 16:14
                                          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
                                        • ИМ
                                          22 ноября 2024 г. 21:51
                                          Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…