Libcurl证书固定工作在iPhone上,但不是在Android上
Libcurl Certificate Pinning working on iPhone but not on Android
这是我在Obj-C和JAVA项目中使用的c++代码。
string readBuffer;
string certificateBeingUsed;
CURL *curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_URL, "https://apiServer");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 120);
curl_easy_setopt(curl, CURLOPT_ENCODING, GZIP);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER , true);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST , 2);
curl_easy_setopt(curl, CURLOPT_CAINFO,certificateBeingUsed);
CURLcode res;
res = curl_easy_perform(curl);
--------------------------------------------------------------------
在Xcode中,我有我的证书"certificatePinning.der"存储在资源/证书文件夹。
要使用上面的代码,我将certificateBeingUsed设置为我的证书路径:certificateBeingUsed = "/Users/graceo/Library/Developer/CoreSimulator/Devices/1BB154CB-276B-4DDC-86C8-4975213D7E3B/data/Containers/Bundle/Application/4819EC2A-CA18-46BF-815F-445B5E3E519F/TestStoryBoardWithLibraryAndSwift.app/certificatePinning.der"
和res
返回成功,readBuffer
包含从服务器发送的响应。
--------------------------------------------------------------------
在Android Studio中,我的证书"certificatePinning.der"存储在资产文件夹中。(我在使用它之前把它复制到数据文件夹)
要使用上面的代码,我将certificateBeingUsed设置为我的证书路径:certificateBeingUsed = "/data/data/packageName/certificatePinning.der"
但res
返回CURLE_SSL_CACERT_BADFILE (77)
, readBuffer
为空
--------------------------------------------------------------------
我在Android中缺少的是什么,无法验证与服务器存储的证书??
注:
- libCurl支持SSL
- 在android中如果我将其设置为证书证书。 . pem它将返回成功,但我想使用我的证书代替。
这可能是编码问题,尝试使用以下命令将。der文件转换为。pem格式:
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用ndk-build.cmd构建Android.so文件
- Android NDK传感器向事件队列报告奇怪的间隔
- Android P-9.0.0_r53 Logcat主缓冲区超出定义大小
- OpenCV Android C++ imwrite not found
- Android NDK 编译 LAME HAVE_MPGLIB > 'interface.h' 文件未找到
- 如何使用 Boost Asio 在 Android 上获取我的本地 udp IP 地址?
- Android Studio 中带有静态库的原生C++代码
- 如何在 Android Studio 4 中编译 C/C++ 原生代码
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- Android 在编译二进制文件时重建静态库
- 我只想在Android 4.4中使用C++11库
- 无法将标准库导入本机 android 项目中的头文件
- Android Java USB for native cpp
- 编写简单的windows服务器应用程序(Visual c++),使iPhone / Android可以通过Wifi检索值
- Libcurl证书固定工作在iPhone上,但不是在Android上
- 是否有可能在浏览器、android和iphone上使用c++编写核心逻辑进行开发?
- 是否可以使用 ANSI C/C++ 或 Embedded C 开发实体层,以便在 Android 和 iPhone 平台中使用?
- iPhone/Android上的C++库:包装类的生成
- 用于多跨平台使用的音频库C++(iphone、android..)