zloi
zloiFeb. 26, 2019, 9:30 a.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"

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

19
Evgenii Legotckoi
  • Feb. 26, 2019, 9:34 a.m.
  • (edited)

Добрый день.

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

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

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

    zloi
    • Feb. 26, 2019, 9:43 a.m.

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

      Evgenii Legotckoi
      • Feb. 26, 2019, 9:53 a.m.

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

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

      ANDROID_NDK_ROOT: /home/user1/android-ndk-r10d
      ANDROID_ARCH: arch-arm64
      ANDROID_EABI: aarch64-linux-android-4.9
      ANDROID_API: android-21
      ANDROID_SYSROOT: /home/user1/android-ndk-r10d/platforms/android-21/arch-arm64
      ANDROID_TOOLCHAIN: /home/user1/android-ndk-r10d/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin
      FIPS_SIG:
      CROSS_COMPILE: aarch64-linux-androideabi-
      ANDROID_DEV: /home/user1/android-ndk-r10d/platforms/android-21/arch-arm64/usr
      

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

      ANDROID_NDK_ROOT: C:/path/to/ndk/android-ndk-r10d
      ANDROID_ARCH: arch-arm64
      ANDROID_EABI: aarch64-linux-android-4.9
      ANDROID_API: android-21
      ANDROID_SYSROOT: C:/path/to/ndk/android-ndk-r10d/platforms/android-21/arch-arm64
      ANDROID_TOOLCHAIN: C:/path/to/ndk/android-ndk-r10d/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin
      FIPS_SIG:
      CROSS_COMPILE: aarch64-linux-androideabi-
      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, 1:57 a.m.

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

          ВС
          • Aug. 8, 2019, 9:35 a.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, 3:36 a.m.

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

                    Evgenii Legotckoi
                    • April 24, 2020, 3:40 a.m.
                    • (edited)

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

                      Михаиллл
                      • April 24, 2020, 3:48 a.m.

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

                        Михаиллл
                        • April 24, 2020, 6:03 a.m.

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

                          Михаиллл
                          • April 24, 2020, 7:16 a.m.

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

                            Evgenii Legotckoi
                            • April 24, 2020, 7:19 a.m.

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

                              A
                              • June 1, 2020, 11:02 a.m.

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

                                Михаиллл
                                • June 1, 2020, 11:12 a.m.

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

                                  A
                                  • June 1, 2020, 11:26 a.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, 10:22 a.m.

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

                                      zloi
                                      • Aug. 18, 2020, 9:57 p.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
                                        d
                                        • dsfs
                                        • April 26, 2024, 11:56 a.m.

                                        C ++ - Test 004. Pointers, Arrays and Loops

                                        • Result:80points,
                                        • Rating points4
                                        d
                                        • dsfs
                                        • April 26, 2024, 11:45 a.m.

                                        C++ - Test 002. Constants

                                        • Result:50points,
                                        • Rating points-4
                                        d
                                        • dsfs
                                        • April 26, 2024, 11:35 a.m.

                                        C++ - Test 001. The first program and data types

                                        • Result:73points,
                                        • Rating points1
                                        Last comments
                                        k
                                        kmssrFeb. 9, 2024, 2:43 a.m.
                                        Qt Linux - Lesson 001. Autorun Qt application under Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                                        Qt WinAPI - Lesson 007. Working with ICMP Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                                        EVA
                                        EVADec. 25, 2023, 6:30 p.m.
                                        Boost - static linking in CMake project under Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
                                        J
                                        JonnyJoDec. 25, 2023, 4:38 p.m.
                                        Boost - static linking in CMake project under Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
                                        G
                                        GvozdikDec. 19, 2023, 5:01 a.m.
                                        Qt/C++ - Lesson 056. Connecting the Boost library in Qt for MinGW and MSVC compilers Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
                                        Now discuss on the forum
                                        PS
                                        Peter SonMay 4, 2024, 12:57 a.m.
                                        Best Indian Food Restaurant In Cincinnati OH Ready to embark on a gastronomic journey like no other? Join us at App india restaurant and discover why we're renowned as the Best Indian Food Restaurant In Cincinnati OH . Whether y…
                                        Evgenii Legotckoi
                                        Evgenii LegotckoiMay 2, 2024, 9:07 p.m.
                                        Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.
                                        IscanderChe
                                        IscanderCheApril 30, 2024, 11:22 a.m.
                                        Во Flask рендер шаблона не передаётся в браузер Доброе утро! Имеется вот такой шаблон: <!doctype html><html> <head> <title>{{ title }}</title> <link rel="stylesheet" href="{{ url_…
                                        G
                                        GarApril 22, 2024, 12:46 p.m.
                                        Clipboard Как скопировать окно целиком в clipb?
                                        Павел Дорофеев
                                        Павел ДорофеевApril 14, 2024, 9:35 a.m.
                                        QTableWidget с 2 заголовками Вот тут есть кастомный QTableView с многорядностью проект поддерживается, обращайтесь

                                        Follow us in social networks