【问题标题】:libcurl with client certificate,i get an error "Unable to load client key -8178. * NSS error -8178"带有客户端证书的 libcurl,我收到错误“无法加载客户端密钥 -8178。* NSS 错误 -8178”
【发布时间】:2013-02-28 19:09:51
【问题描述】:

当我运行这段代码时,我得到了错误信息:

  • 即将 connect() 到 10.12.190.155 端口 443 (#0)
  • 正在尝试 10.12.190.155... * 已连接
  • 已连接到 10.12.190.155 (10.12.190.155) 端口 443 (#0)
  • 使用证书路径初始化 NSS:sql:/etc/pki/nssdb
  • CA 文件:/home/wh/work/sslkey/ca.crt CApath:无
  • 无法加载客户端密钥 -8178。
  • NSS 错误 -8178
  • 关闭连接 #0
  • 本地 SSL 证书问题

卷曲 *卷曲; CURLcode res;

//static const char *pClientCert = "/home/wh/work/sslkey/user1.pem";

curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();

if(curl)
{
    curl_easy_setopt(curl, CURLOPT_HEADER, 1L);
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
    curl_easy_setopt(curl, CURLOPT_URL, "https://10.12.190.155/");
    curl_easy_setopt(curl, CURLOPT_CAINFO, "/home/wh/work/sslkey/ca.crt");
    curl_easy_setopt(curl,CURLOPT_SSLCERT,"/home/wh/work/sslkey/user1.pem");
    res = curl_easy_perform(curl);
          /* Check for errors */
    if(res != CURLE_OK)
        fprintf(stderr, "curl_easy_perform() failed: %s\n",
            curl_easy_strerror(res));
    curl_easy_cleanup(curl);
}

curl_global_cleanup();

【问题讨论】:

    标签: libcurl


    【解决方案1】:

    您的代码中没有curl_easy_setopt(curl, CURLOPT_SSLKEY, "key_file_path"); 来获取您的密钥。另外还不清楚您的 user1.pem 是否同时包含密钥和证书?

    如果答案是否定的,则需要使用上述命令提供 key.pem 文件。如果您从 .p12 文件转换您的密钥,请同时检查 this 问题。

    阅读this以正确编写代码。

    【讨论】:

      猜你喜欢
      • 2014-01-24
      • 2017-05-01
      • 2011-12-10
      • 2016-06-14
      • 2018-11-24
      • 2016-02-17
      • 1970-01-01
      • 2015-10-26
      • 2012-03-21
      相关资源
      最近更新 更多