Cómo actualizar la versión de OpenSSL en CSipSimple?
Estoy utilizando código CSipSimple para mi aplicación. Pero, por desgracia, Google Playstore ha planteado una advertencia: Está utilizando una versión vulnerable de OpenSSL
Quiero actualizar la versión de OpenSSL del código existente.
- Android construir PJSIP con openssl
- Convertir un archivo .pk8 en archivo .key
- Certificado de Libcurl Pinning trabajando en el iPhone pero no en Android
- Construyendo OpenSSL para Android (ARMv7) en Win32
- Generar clave de hash para la aplicación utilizando facebook sdk
He aquí alguna referencia que he seguido. CSipSimple-OpenSSL Pero estoy atascado en el paso 5 no hay tal comando
m: comando no encontrado
¿Estoy siguiendo pasos incorrectos? Si alguno ha hecho ya con esto, entonces por favor me ayude o proporcione algunos pasos / enlace.
Cualquier ayuda sería muy apreciada
- Compilación de la última versión de OpenSSL para Android
- openSSL usando los problemas de NDK de Android
- No se puede localizar el símbolo 'tcgetattr' referido por "libcrypto.so"
- Crear archivo PKCS # 12 con certificado autofirmado a través de OpenSSL en Windows para mi aplicación para Android
- Construcción de BoringSSL y Conscrypt y agrupación con Android apk
- Utilice la función PHP openssl_verify () para verificar Firma y datos creados por Android Client APP
- Comprobación de la firma del servidor de compras de Android en la aplicación mediante php OpenSSL
- Mensaje de advertencia de Google Play y OpenSSL
En caso de que alguien encuentre el problema de usar la versión vulnerable de OpenSSL en una de las bibliotecas nativas, agrego más detalles e instrucciones para la solución @Nonos. Este tutorial es para CSipSimple, pero la construcción de bibliotecas estáticas OpenSSL es una solución más genérica.
Recomiendo la segunda solución como agregar una biblioteca estática de OpenSSL es una solución más simple.
Requisitos previos: Android NDK debe configurarse primero.
- En primer lugar, descargue la versión compatible con OpenSSL (> 1.0.2f / 1.0.1r).
- Descargue dos scripts de este enlace . En caso de que alguien se pregunte lo que hacen: Construyen la biblioteca de OpenSSL para cada compilación android (armeabi, x86, mips, etc …)
- Modifique
setenv-android-mod.sh
-> línea18
con la versión ndk - Modifique
setenv-android-mod.sh
-> línea40
con la versión de la API de Android - Modificar
build-all-arch.sh
-> línea 7 con el nombre de la carpeta de la biblioteca OpenSSL (en mi caso eraopenssl-1.0.1t
) - Después de la construcción exitosa, dentro de la carpeta
dist
las bibliotecas estarán presentes - Coloque esas carpetas dentro de
csipsimple/CSipSimple-trunk/CSipSimple/jni/openssl/lib
- Coloque los archivos de encabezado de
openssl-1.0.1{version}/include
encsipsimple/CSipSimple-trunk/CSipSimple/jni/openssl/include
. Tenga en cuenta que algunos de los archivos de encabezado son enlaces simbólicos a otros archivos. - Compile CSipSimple. Tenga en cuenta que
OpenSSL
yCSipSimple
deben ser compilados con la misma versión de API de Android.
Debe construir correctamente después de hacer los pasos.
mm es para hacer el módulo, esto está disponible dentro de la compilación del proyecto de fuente de Android, por lo que tendrá que configurar un entorno de construcción , dentro de los módulos que se proporciona es el OpenSSL en la plataforma Android (desde el archivo readme que está haciendo referencia) . La configuración de un entorno de compilación tomará por lo menos un día o dos por sí mismo por lo que no lo recomendaría a menos que ya lo tienen por una razón diferente. Además, Android cayó soporte para OpenSSL en su última versión y están utilizando BoringSSL. A mi entender, la mejor manera de lograr lo que quieres aquí es cruzar la compilación y construir OpenSSL desde el origen siguiendo las directrices de la wiki abierta de ssl, creando archivos .a y haciendo una referencia estática a ellos en tu aplicación. Esta es también la forma recomendada para evitar referenciar las bibliotecas del sistema en N y versiones posteriores.
EDIT : Para agregar las bibliotecas a mi proyecto como bibliotecas estáticas pre-construidas, he creado una carpeta openssl bajo mi directorio jni que contiene lib / (que contiene los archivos .a para las arquitecturas que apoyo), include / que tiene las necesarias encontrar que en la versión de openssl que descargó) y Android.mk que tiene lo siguiente:
include $(CLEAR_VARS) LOCAL_MODULE := libssl LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libssl.a include $(PREBUILT_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := libcrypto LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libcrypto.a include $(PREBUILT_STATIC_LIBRARY)
Luego, para usar la biblioteca dentro de otro módulo jni agregué lo siguiente a su archivo Android.mk:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../openssl/include LOCAL_STATIC_LIBRARIES := libssl libcrypto
Esto también es similar a lo que se ha hecho aquí , excepto que no se recomienda usar archivos .a proporcionados por fuentes no openssl.
- Cómo realizar un clic de botón dentro de un Webview Android
- Cómo configurar múltiples valores de gravedad mediante programación en Kotlin?