zloi
Feb. 26, 2019, 8:30 p.m.

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

Do you like it? Share on social networks!

19
Evgenii Legotckoi
  • Feb. 26, 2019, 8:34 p.m.
  • (edited)

Добрый день.

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

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

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

    zloi
    • Feb. 26, 2019, 8:43 p.m.

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

      Evgenii Legotckoi
      • Feb. 26, 2019, 8:53 p.m.

      Я думаю, что скрипт универсальный, там есть пометки с информацией для 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 строке, полагаю, что имелся ввиду этот скрипт. То есть должно быть достаточно внимательно просмотреть весь скрипт, установить необходимые пакеты и поправить переменные в нужных местах.

        Михаиллл
        • July 30, 2019, 11:57 a.m.

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

          ВС
          • Aug. 8, 2019, 7:35 p.m.
          • (edited)

          Всем Привет. Намучался я с этим 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 компилирую под андройд

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

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

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

                  Михаиллл
                  • April 24, 2020, 1:36 p.m.

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

                    Evgenii Legotckoi
                    • April 24, 2020, 1:40 p.m.
                    • (edited)

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

                      Михаиллл
                      • April 24, 2020, 1:48 p.m.

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

                        Михаиллл
                        • April 24, 2020, 4:03 p.m.

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

                          Михаиллл
                          • April 24, 2020, 5:16 p.m.

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

                            Evgenii Legotckoi
                            • April 24, 2020, 5:19 p.m.

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

                              A
                              • June 1, 2020, 9:02 p.m.

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

                                Михаиллл
                                • June 1, 2020, 9:12 p.m.

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

                                  A
                                  • June 1, 2020, 9:26 p.m.
                                  • (edited)
                                  • The answer was marked as a solution.

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

                                    zloi
                                    • Aug. 16, 2020, 8:22 p.m.

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

                                      zloi
                                      • Aug. 19, 2020, 7:57 a.m.
                                      • (edited)

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

                                        Comments

                                        Only authorized users can post comments.
                                        Please, Log in or Sign up
                                        • Last comments
                                        • AK
                                          April 1, 2025, 11:41 a.m.
                                          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                                        • Evgenii Legotckoi
                                          March 9, 2025, 9:02 p.m.
                                          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                                        • VP
                                          March 9, 2025, 4:14 p.m.
                                          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
                                        • ИМ
                                          Nov. 22, 2024, 9:51 p.m.
                                          Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                                        • Evgenii Legotckoi
                                          Oct. 31, 2024, 11:37 p.m.
                                          Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup