2012-10-11 42 views
2

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

我已经在x86 linux PC上测试过这个应用程序,我的应用程序工作正常。

与我

这里已经把我卷曲的SetOption代码,并在这,我只是想从SD卡读取的证书

下面

是我试图设置证书卷曲设置选项

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应用程序还有其他一些加载证书的方式。

+0

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

回答

0

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

根据您使用NDK的方式(NativeActivity与Java活动),您可以从C或Java执行此操作。无论哪种方式工作。

另外,考虑使用Java的HTTP堆栈。它已经在那里,它支持SSL,不需要拖动额外的代码到项目中。

一个相关的例子在这里:Load files bigger than 1M from assets folder除非你不需要将证书分割成许多文件,因为它们不会大概在1MB左右。