libcurl与客户端证书,我收到错误“无法加载客户端密钥-8178。* NSS错误-8178”

时间:2013-03-13 01:18:24

标签: libcurl

当我运行此代码时,我收到错误信息:

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

CURL *卷曲;     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();

1 个答案:

答案 0 :(得分:0)

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

如果答案为否,则需要使用上述命令提供key.pem文件。如果您从.p12文件转换密钥,那么也要检查this问题。

阅读this以正确编写代码。