Wie funktioniert SSL peer_verify unter Android?

Ich habe libcurl-7.36.0 mit openssl-1.0.1h auf Android erfolgreich erstellt. Ich habe einen Beispielcode zum Testen der HTTPS-Verbindung ausgeführt. Der SSL_VERIFYPEER ist standardmäßig aktiviert. Der Zertifikatspfad unter Android lautet / system / etc / security / cacerts, daher setze ich CURLOPT_CAPATH auf / system / etc / security / cacerts.

ls -l /system/etc/security/cacerts
-rw-r--r-- root     root         4767 2012-09-22 11:57 00673b5b.0
-rw-r--r-- root     root         4573 2012-09-22 11:57 03e16f6c.0
-rw-r--r-- root     root         5292 2012-09-22 11:57 08aef7bb.0
......

Hier ist ein Ausschnitt meiner Codes.

curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.com:443");
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);     // default
curl_easy_setopt(curl, CURLOPT_CAPATH, "/system/etc/security/cacerts");
curl_easy_perform(curl);

Curl gibt immer einen Fehler zurück:

== Info: SSL certificate problem: unable to get local issuer certificate  
== Info: Closing connection 0  
curl_easy_perform() failed: Peer certificate cannot be authenticated with given CA certificates

Es funktioniert, wenn ich die CA-Bundle-Datei ca-bundle.crt von herunterladehttp://curl.haxx.se/docs/caextract.html undcurl_easy_setopt(curl, CURLOPT_CAINFO, "path:/ca-bundle.crt").

Hier ist meine Frage: Gibt es eine Möglichkeit, die Überprüfung von SSL-Peers durch Lesen des Zertifikats von zu ermöglichen?/system/etc/security/cacerts ohne die CA-Bundle-Datei manuell herunterzuladen und anzugebenCURLOPT_CAINFO?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage