如何在CSipSimple中更新OpenSSL版本?

时间:2016-04-08 07:03:05

标签: android openssl google-play csip-simple

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

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

以下是我所遵循的一些参考资料。 CSipSimple-OpenSSL 但我坚持第5步没有这样的命令

  

m:找不到命令

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

任何帮助都会非常感激

2 个答案:

答案 0 :(得分:3)

mm适用于make模块,这可以在Android源项目构建中使用,因此您需要设置build environment,在提供的模块中是OpenSSL on Android platform(自述文件从中)您正在参考)。设置一个构建环境本身至少需要一两天,所以除非你因为不同的原因已经拥有它,否则我不会推荐它。此外,Android在最新版本中放弃了对OpenSSL的支持并且正在使用BoringSSL 。据我所知,在这里实现你想要的最好的方法是按照open ssl wiki的指导原则从源代码交叉编译和构建OpenSSL,创建.a文件并在你的应用程序中静态引用它们。这也是recommended方式,以避免在N及更高版本上引用系统库。

编辑:要将库作为预构建的静态库添加到我的项目中,我在包含lib /的jni目录下创建了一个openssl文件夹(其中包含我支持的体系结构的.a文件), 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

除了不建议使用非openssl源提供的.a文件之外,这也类似于已经完成的here

答案 1 :(得分:3)

如果有人遇到在其中一个本机库中使用易受攻击的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 - >使用ndk版本
  4. 18
  5. 修改setenv-android-mod.sh - >使用Android API版本
  6. 40
  7. 修改build-all-arch.sh - >第7行,包含OpenSSL库的文件夹名称(在我的例子中是openssl-1.0.1t
  8. 成功构建后,文件夹dist内存在库
  9. 将这些文件夹放在csipsimple/CSipSimple-trunk/CSipSimple/jni/openssl/lib
  10. 将头文件从openssl-1.0.1{version}/include放到csipsimple/CSipSimple-trunk/CSipSimple/jni/openssl/include。请注意,某些头文件是与其他文件的符号链接。
  11. 编译CSipSimple。请注意,必须使用相同的Android API版本编译OpenSSLCSipSimple
  12. 在完成步骤后应该成功构建。