由于Android不支持新的openssl,我的应用程序之一需要使用openssl 1.0.1c,因此我想到了交叉构建openssl和curl到android。我已经通过此链接Using cURL in Android交叉构建了用于android的curl和openssl ..我能够成功构建并获得共享库。现在我正在尝试运行我的应用程序,在我的应用程序中我需要添加自签名证书,当我尝试通过我的本机culr clienr代码添加存储在sdcard中的证书时,我收到以下错误响应curl ie CURLE_SSL_CERTPROBLEM(58)=>本地客户端证书的问题。
我在x86 linux PC上测试了这个应用程序,我的应用程序运行正常。
这里我已经放了我的curl setoption代码,并且我只是想从sdcard读取证书
下面是我试图设置证书的卷曲设置选项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 :(得分:0)
如果在没有SD卡的设备上运行,您的应用就会中断。首次运行时,最好将必要的文件从app资产复制到应用程序的数据文件夹中。
根据您使用NDK(NativeActivity与Java活动)的方式,您可以从C或Java中执行此操作。无论哪种方式都有效。
另外,请考虑使用Java的HTTP堆栈。它已经存在并支持SSL,无需将额外的代码拖入项目中。
这里有一个相关的例子:Load files bigger than 1M from assets folder除了你不需要将证书拆分成许多文件,因为它们不会大约1 MB。