如何在 CSipSimple 中更新 OpenSSL 版本?

How to update OpenSSL version in CSipSimple?

我正在为我的应用程序使用 CSipSimple 代码。但不幸的是,Google Playstore 提出警告: 您正在使用易受攻击的 OpenSSL 版本

我想从现有代码更新 OpenSSL 版本。

这是我遵循的一些参考资料。 CSipSimple-OpenSSL 但是我卡在了第 5 步 没有这样的命令

m: command not found

我是否遵循了错误的步骤?如果有人已经完成了这个,那么请帮助我或提供一些 steps/link。

任何帮助将不胜感激

mm 用于 make 模块,这在 Android 源项目构建中可用,因此您需要设置 build environment, within the modules provided is the OpenSSL on Android platform (from which the readme file you're referencing is taken) . Setting up a build environment will take at least a day or two by itself so I wouldn't recommend it unless you already have it for a different reason.. Additionally, Android dropped support for OpenSSL in their latest release and are using BoringSSL. To my knowledge, the best way to achieve what you want here, is to cross compile and build OpenSSL from source following the guidelines on the open ssl wiki, creating .a files and statically referencing them in your app. This is also the recommended 方式以避免在 N 及以后引用系统库版本。

编辑:为了将库作为预建静态库添加到我的项目中,我在包含 lib/ 的 jni 目录下创建了一个 openssl 文件夹(其中包含用于我支持的体系结构),include/ 具有必要的包含(您可以在下载的 openssl 版本下找到)和 Android.mk 具有以下内容:

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)

然后,为了在另一个 jni 模块中使用该库,我将以下内容添加到其 Android.mk 文件中:

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../openssl/include
LOCAL_STATIC_LIBRARIES := libssl libcrypto

这也类似于已经完成的here,只是不建议使用非 openssl 源提供的 .a 文件。

如果有人遇到在其中一个本机库中使用易受攻击的 OpenSSL 版本的问题,我会为 @Nonos 解决方案添加更多详细信息和说明。本教程适用于 CSipSimple,但构建 OpenSSL 静态库是更通用的解决方案。

我推荐第二种解决方案,因为添加静态 OpenSSL 库是更简单的解决方案。

前提条件:Android需要先配置NDK

  1. 首先,下载OpenSSL兼容版本(> 1.0.2f/1.0.1r)。
  2. this link 下载两个脚本。如果有人想知道他们做了什么:他们为每个 android 构建(armeabi、x86、mips 等)构建 OpenSSL 库
  3. 修改 setenv-android-mod.sh -> 第 18 行为 ndk 版本
  4. 修改 setenv-android-mod.sh -> 行 40 为 Android API 版本
  5. 使用 OpenSSL 库的文件夹名称修改 build-all-arch.sh -> 第 7 行(在我的例子中是 openssl-1.0.1t
  6. 构建成功后,文件夹 dist 中将出现库
  7. 将这些文件夹放入 csipsimple/CSipSimple-trunk/CSipSimple/jni/openssl/lib
  8. 将头文件从 openssl-1.0.1{version}/include 放到 csipsimple/CSipSimple-trunk/CSipSimple/jni/openssl/include。请注意,一些头文件是其他文件的符号链接。
  9. 编译CSipSimple。请注意,OpenSSLCSipSimple 必须使用相同的 Android API 版本进行编译。

完成步骤后应该构建成功。