2

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

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

我在这里放了我的 curl setoption 代码,我只是想从 sdcard 读取证书

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

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 应用程序是否有其他方法来加载证书。

4

1 回答 1

0

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

根据您使用 NDK(NativeActivity 与 Java 活动)的方式,您可以使用 C 或 Java 进行操作。无论哪种方式都有效。

另外,考虑使用 Java 的 HTTP 堆栈。它已经存在并且支持 SSL,无需将额外的代码拖入项目中。

一个相关的例子在这里:从 assets 文件夹加载大于 1M 的文件除了您不需要将证书拆分为许多文件,因为它们永远不会在 1 MB 左右。

于 2012-10-11T18:21:07.790 回答