libsoup 调用http API报错 unacceptable TLS certificate

环境:macos、libsoup-2.4

问题:通过soup_session_send调用http api报错 "unacceptable TLS certificate"

原因:libsoup使用gio-network的gnutls后端,默认查找证书在/opt/homebrew/etc/gnutls/cert.pem下,部分mac不存在这个证书文件。

解决:将/opt/homebrew/etc/gnutls/cert.pem证书打包到程序中,在代码中将证书设置到SoupSession的tls-database属性上

cpp 复制代码
    self->session = soup_session_new();
    char exePath[512];
    uint32_t size = sizeof(exePath);
    if (_NSGetExecutablePath(exePath, &size) != 0) {
        g_warning("Executable path too long\n");
        return;
    }
    
    char *dir = dirname(exePath);
    char env_path[512];
    memset(env_path, 0, sizeof(env_path));
    snprintf(env_path, sizeof(env_path), "%s/../Resources/gnutls/cert.pem", dir);

    GError *error = NULL;
    GTlsDatabase *db = g_tls_file_database_new(env_path, &error);
    if (!db) {
        g_warning("load cert failed: %s", error->message);
        g_clear_error(&error);
    }
    g_object_set(self->session, "tls-database", db, NULL);
    g_object_unref(db);
相关推荐
左手厨刀右手茼蒿10 小时前
Flutter 组件 http_requests 适配鸿蒙 HarmonyOS 实战:极简网络请求,构建边缘端轻量级 RESTful 通讯架构
网络·flutter·http
WIN-U613 小时前
新版华三H3C交换机配置NTP时钟步骤 示例(命令及WEB配置)
网络协议·tcp/ip·http
nbsaas-boot17 小时前
基于 HTTP 构建 MCP Tools 的完整工程解析
网络·网络协议·http·ai
王码码203517 小时前
Flutter for OpenHarmony:使用 pluto_grid 打造高性能数据网格
flutter·http·华为·架构·harmonyos
先跑起来再说17 小时前
从原理到实践:彻底搞懂Cookie和Session的区别
计算机网络·http·https
兰.lan17 小时前
【黑马ai测试】HTTP协议-抓包工具定位-弱网测试-缺陷介绍
网络·python·网络协议·http
必胜刻1 天前
Gin框架---框架CORS
http·https·gin
zl_dfq2 天前
计算机网络 之 【http协议】(简易HTTP服务器实现逻辑)
服务器·计算机网络·http
zl_dfq2 天前
计算机网络 之 【http协议】(http的无状态性、Cookie与Session的简介)
网络协议·计算机网络·http
添砖java‘’2 天前
应用层协议HTTP
网络·网络协议·http