2012-10-11 4 views
2

Android는 새로운 openssl을 지원하지 않으며 내 응용 프로그램 중 하나는 openssl 1.0.1c를 사용해야하기 때문에 openssl과 cross to building을 android로 생각했습니다. 나는이 링크 Using cURL in Android의 도움으로 안드로이드에 대한 컬과 openssl을 만들었다. 나는 성공적으로 빌드 할 수 있고 공유 된 라이브러리를 가지고있다. 이제 내 응용 프로그램을 실행하려고합니다. 내 응용 프로그램에서 내 자체 서명 인증서를 추가해야합니다. 내 기본 culr clienr 코드를 통해 sdcard에 저장된 인증서를 추가하려고하면 다음 오류 응답이 표시됩니다. curl ie CURLE_SSL_CERTPROBLEM (58) => 로컬 클라이언트 인증서에 문제가 있습니다.은 android ndk curl 응용 프로그램에서 openssl 인증서를 포함합니다.

이 응용 프로그램을 x86 Linux PC에서 테스트했는데 응용 프로그램이 정상적으로 작동합니다. 나는 여기

내 컬에서 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 수준에서 인증서를 설정하는 올바른 접근 방식을 따르고 있습니까? 이 응용 프로그램 lib는 내 Java 응용 프로그램이 사용되기 때문에 certs를로드하는 다른 방법이 있습니다.

+0

귀하의 앱이 1.0.1c openssl 라이브러리를 사용하는지 어떻게 확인합니까? 특별한 조치를 취하지 않으면 시스템 라이브러리가로드됩니다! –

답변

0

SD 카드가없는 기기에서 실행하면 앱이 깨집니다. 첫 번째 실행시 필수 파일을 앱 애셋에서 앱의 데이터 폴더로 더 효과적으로 복사합니다.

NDK (NativeActivity 대 Java 작업)를 사용하는 방식에 따라 C 또는 Java에서 수행 할 수 있습니다. 어느 쪽이든 작동합니다.

또한 Java의 HTTP 스택 사용을 고려하십시오. 이미 있으며 SSL을 지원하므로 추가 코드를 프로젝트로 드래그 할 필요가 없습니다.

관련된 예제는 다음과 같습니다. Load files bigger than 1M from assets folder 인증서를 여러 파일로 분할 할 필요가 없다는 점을 제외하고는 1MB 정도되지 않습니다.

관련 문제