zloi26 февраля 2019 г. 9: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"

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
17

Добрый день.

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

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

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

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

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

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

ВС

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

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

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

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

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

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

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

a

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

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

a

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

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Как стать автором?

Внесите вклад в развитие сообщества EVILEG.

Узнайте, как стать автором сайта.

Изучить
Donate

Добрый день, Дорогие Пользователи !!!

Я Евгений Легоцкой, разработчик EVILEG. И это мой хобби-проект, который помогает учиться программированию другим программистам и разработчикам

Если сайт помог вам, и вы хотите также поддержать развитие сайта, то вы можете сделать пожертвование следующими способами

PayPalYandex.Money
Timeweb

Позвольте мне порекомендовать вам отличный хостинг, на котором расположен EVILEG.

В течение многих лет Timeweb доказывает свою стабильность.

Для проектов на Django рекомендую VDS хостинг

Посмотреть Хостинг
ИП

C++ - Тест 005. Структуры и Классы

  • Результат:66баллов,
  • Очки рейтинга-1
ВГ

C++ - Тест 003. Условия и циклы

  • Результат:64баллов,
  • Очки рейтинга-1
ВГ

C++ - Тест 005. Структуры и Классы

  • Результат:83баллов,
  • Очки рейтинга4
Последние комментарии
R

Qt WinAPI - Урок 001. Как собрать все DLL, используемые в Qt-проекте?

Не думал, что так оперативно ответите. Спасибо большое, буду ждать! =)

Qt WinAPI - Урок 001. Как собрать все DLL, используемые в Qt-проекте?

Да помнится так были проблемы при сборке MinGW я вроде исправил но на гит не закомитил. Если завтра будет время займусь.
R

Qt WinAPI - Урок 001. Как собрать все DLL, используемые в Qt-проекте?

Добрый день. Вы писали, что под х64 нужно пересобрать проект, при сборке появляются ошибки типа C:\SRC\LibraryCollector-lc_js\LibraryCollector-lc_js\wrappers\dir.cpp:149: ошибка: invalid co…

Компьютерная геометрия с Qt Creator

Вы очень сильно заблуждаетесь. Вот формула для расчёта отражённого вектора. Расчёт углов через косинусы и синусы не требуется от слова совсем . Подробнее обсуждение в этом…

Компьютерная геометрия с Qt Creator

Скалярная математика и тригонометрия - суть одно и тоже. Просто разные языки описания одного предмета. В конечном итоге для расчёта коэффициента отражения нужно знать косинус угла падения. …
Сейчас обсуждают на форуме

Счечик производительности сети

Хорошо. После работы сегодня гляну ваш код внимательно.

QWebEngineView не запускается если к ПК подключено несколько мониторов

Добрый день. Попробуйте запустить приложение на другом ПК с другой графической картой. Может быть баг в OpenGL. Если запустится, то искать способ правильно инициализировать OpenGL конт…

Qt C++ и Python

Если вы хотите использовать Qt и Python. То используйте PyQt5 (неофициальная библиотека привязок из Python к Qt) или PySide2 (официально поддерживаемая бибилотека привязок из Python к Qt). …

Как в Qt в qmenu добавить scrollarea

Вот это наследованный класс меню. Но посути это обычное меню. #pragma once#include <QtWidgets>class TransMenu : public QMenu { Q_OBJECTpublic: TransMenu(QWidget* parent = …

OpenCV Android

нет, Вы берете исходники и под свою систему собираете библиотеки OpenCV(в сети полно инструкций), а потом уже эти библиотеки подключаете к совему Android проекту
О нас
Услуги
© EVILEG 2015-2020
Рекомендует хостинг TIMEWEB