2

Android は新しい openssl をサポートしておらず、私のアプリケーションの 1 つは openssl 1.0.1c を使用する必要があるため、openssl と curl を android にクロスビルドすることを考えました。このリンクUsing cURL in Android .. を使用して、Android用の curl と openssl をクロス ビルドしました。正常にビルドでき、共有ライブラリを取得できました。そして今、アプリケーションを実行しようとしています。アプリケーションで自己署名証明書を追加する必要があります。ネイティブの culr クライアント コードを介して SD カードに保存されている証明書を追加しようとすると、次のエラー応答が返されます。 curl ie CURLE_SSL_CERTPROBLEM (58)=>ローカル クライアント証明書に問題があります。

このアプリケーションを x86 Linux PC でテストしましたが、アプリケーションは正常に動作します。

ここに私のcurl setoptionコードを入れました.sdcardから証明書を読み込もうとしています.

以下は、証明書を設定しようとした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レベルで証明書を設定するための正しいアプローチに従っていますか?. このアプリケーション lib が使用されているので、私の Java アプリケーションは証明書をロードする別の方法があります。

4

1 に答える 1

0

SD カードのないデバイスで実行すると、アプリが壊れます。最初の実行時に、必要なファイルをアプリ アセットからアプリのデータ フォルダーにコピーすることをお勧めします。

NDK の使用方法 (NativeActivity と Java アクティビティ) に応じて、C または Java から実行できます。どちらの方法でも機能します。

また、Java の HTTP スタックの使用を検討してください。これは既に存在し、SSL をサポートしているため、追加のコードをプロジェクトにドラッグする必要はありません。

関連する例は次のとおりです。アセット フォルダーから 1M を超えるファイルをロードするただし、証明書を多くのファイルに分割する必要はありません。

于 2012-10-11T18:21:07.790 に答える