我正在为我的应用程序使用CSipSimple代码。但不幸的是,谷歌Playstore已经发出警告: 您使用的是易受攻击的OpenSSL版本
我想从现有代码更新OpenSSL版本。
以下是我所遵循的一些参考资料。 CSipSimple-OpenSSL 但我坚持第5步没有这样的命令
m:找不到命令
我是否遵循了错误的步骤?如果有人已经完成了这个,那么请帮助我或提供一些步骤/链接。
任何帮助都会非常感激
答案 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。
setenv-android-mod.sh
- >使用ndk版本18
setenv-android-mod.sh
- >使用Android API版本40
build-all-arch.sh
- >第7行,包含OpenSSL库的文件夹名称(在我的例子中是openssl-1.0.1t
)dist
内存在库csipsimple/CSipSimple-trunk/CSipSimple/jni/openssl/lib
openssl-1.0.1{version}/include
放到csipsimple/CSipSimple-trunk/CSipSimple/jni/openssl/include
。请注意,某些头文件是与其他文件的符号链接。OpenSSL
和CSipSimple
。在完成步骤后应该成功构建。