为Android构建openssl的问题

时间:2014-07-10 17:40:38

标签: android android-ndk openssl

我按照此处的链接为openssl构建Android库:

http://wiki.openssl.org/index.php/Android

以下是我在Setenv-Android.sh中的设置:

_ANDROID_EABI="arm-linux-androideabi-4.6"
_ANDROID_ARCH=arch-arm
_ANDROID_API="android-16"

下一步是运行以下命令:

$ . ./Setenv-Andrhoid.sh

以下是我遇到的错误:

Error: FIPS_SIG does not specify incore module. Please edit this script.

没有提及如何在wiki中配置FIPS_SIG。看起来该脚本正在寻找名为" incore的文件或目录。"我搜索了我的$ ANDROID_NDK_ROOT。但是,我没有任何" incore"文件。

我需要运行的下一个命令如下:

$ ./config shared -no-ssl2 -no-ssl3 -no-comp -no-hw -no-engine \
      --openssldir=/usr/local/ssl/$ANDROID_API

这里,openssldir是否指向绝对/usr/...目录?我希望最终的头文件和lib文件最终在$ANDROID_NDK_ROOT/platform/android-16/arch-arm目录中。

1 个答案:

答案 0 :(得分:6)

Here is the error I am getting:
    Error: FIPS_SIG does not specify incore module. Please edit this script.

哦,你是对的。这已在维基上修复。

我认为脚本中有一条关于“如果......可以安全忽略”的评论,但似乎也没有评论。叹息....

相同的脚本用于构建OpenSSL库的FIPS Capable和非FIPS版本。忽略FIPS_SIG错误是安全的,如果 构建FIPS Capable库。

由于您使用的是OpenSSL and Android,因此可以放心使用。 如果您关注FIPS Library and Android,那么 可能会被忽略。


  

看起来该脚本正在寻找名为“incore”的文件或目录。

为了完整性,incore是一个将HMAC指纹嵌入程序或共享对象的脚本。 FIPS对象模块将使用嵌入式HMAC在启动时对其自身进行完整性测试。它在实践中毫无用处,因为密钥是众所周知的;)

incoreopenssl-fips-2.0.7.tar.gz和朋友分发。将incore放在某处(目录树或例如/usr/local/ssl/android-18/bin)后,将FIPS_SIG设置为文件名。


  

$ ./config shared -no-ssl2 -no-ssl3 -no-comp -no-hw -no-engine           --openssldir =的/ usr /本地/ SSL / $ ANDROID_API

     

这里,openssldir是指向绝对的/ usr / ...目录吗?我希望最终的header和lib文件最终出现在$ ANDROID_NDK_ROOT / platform / android-16 / arch-arm目录中。

--openssldir是安装目录。如果您希望安装库,则应将其设置为$ANDROID_NDK_ROOT/platform/android-16/arch-arm

更多信息:默认情况下,OpenSSL将自己安装在/usr/local/ssl。当我构建iOS时,使用--openssldir=/usr/local/ssl/ios。当我构建Android时,--openssldir=/usr/local/ssl/android-18(或android-14等)。

例如,这是我在Mac Book上看起来的样子:

$ ls /usr/local/ssl/
android-14    darwin    macosx-x64
android-18    ios       macosx-x86