Android ndk 在android ndk curl应用程序中包含openssl证书

Android ndk 在android ndk curl应用程序中包含openssl证书,android-ndk,openssl,libcurl,Android Ndk,Openssl,Libcurl,由于Android不支持新的openssl,并且我的一个应用程序需要使用openssl 1.0.1c,因此我考虑交叉构建openssl并将其应用到Android。在这个链接的帮助下,我已经为android交叉构建了curl和openssl。。我能够成功构建并获得共享LIB。现在我尝试运行我的应用程序,在我的应用程序中,我需要添加我的自签名证书,当我尝试添加通过我的本地culr clienr代码存储在SD卡中的证书时,我从curl得到以下错误响应,即curl_SSL_CERTPROBLEM(58)

由于Android不支持新的openssl,并且我的一个应用程序需要使用openssl 1.0.1c,因此我考虑交叉构建openssl并将其应用到Android。在这个链接的帮助下,我已经为android交叉构建了curl和openssl。。我能够成功构建并获得共享LIB。现在我尝试运行我的应用程序,在我的应用程序中,我需要添加我的自签名证书,当我尝试添加通过我的本地culr clienr代码存储在SD卡中的证书时,我从curl得到以下错误响应,即curl_SSL_CERTPROBLEM(58)=>本地客户端证书问题

我已经在x86 linux PC上测试了这个应用程序,我的应用程序运行良好

在这里,我把我的curl setoption代码放在这里,我只是试图从SD卡读取证书

下面是我尝试设置证书的curl set选项

curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"DER");
curl_easy_setopt(curl,CURLOPT_SSLKEYTYPE,"DER")
curl_easy_setopt(curl,CURLOPT_SSLCERT,/sdcard/sslcerts/mycert.der);
curl_easy_setopt(curl,CURLOPT_SSLKEY,/sdcard/sslcerts/mykey.der);
curl_easy_setopt(curl,CURLOPT_CAINFO,/sdcard/sslcerts/mycacert.root);
curl_easy_setopt(curl,CURLOPT_CAPATH,/sdcard/sslcerts/);

我是否按照正确的方法在android ndk级别设置证书?。由于使用了此应用程序库,我的java应用程序是否有其他方法加载证书。

如果在没有SD卡的设备上运行,您的应用程序将中断。最好在第一次运行时将必需的文件从应用程序资产复制到应用程序的数据文件夹

根据您使用NDK(NativeActivity vs.Java activity)的方式,您可以从C或Java进行操作。两种方法都有效

也可以考虑使用java的HTTP栈。它已经存在并且支持SSL,不需要将额外的代码拖到项目中


这里有一个相关的例子:除了你不需要将证书分割成许多文件,因为它们永远不会达到1MB左右。

如果在没有SD卡的设备上运行,你的应用程序将崩溃。最好在第一次运行时将必需的文件从应用程序资产复制到应用程序的数据文件夹

根据您使用NDK(NativeActivity vs.Java activity)的方式,您可以从C或Java进行操作。两种方法都有效

也可以考虑使用java的HTTP栈。它已经存在并且支持SSL,不需要将额外的代码拖到项目中


这里有一个相关的例子:除了不需要将证书拆分为多个文件之外,因为它们的大小不会超过1MB。

如何确保应用程序使用1.0.1c openssl库?如果不采取特殊措施,系统库将被加载!如何确保应用程序使用1.0.1c openssl库?如果不采取特殊措施,系统库将被加载!