相关疑难解决方法(0)

curl命令 - 无法加载客户端证书-8018

我正在尝试使用curl命令通过代理连接到安全的Web服务,但是我收到以下错误:

无法加载客户端证书-8018.

完整日志:

[e-ballo@myserver]#   curl  -v -x proxy01.net:8080 https://endPointURL.com/SOAP --key ./cert.crt --cert ./cert.crt -capath=/etc/pki/tls/certs
* About to connect() to proxy proxy01.net port 8080 (#0)
*   Trying 10.0.3.64... connected
* Connected to proxy01.net (10.0.3.64) port 8080 (#0)
* Establish HTTP proxy tunnel to endPointURL.com:443
> CONNECT endPointURL.com:443 HTTP/1.1
> Host: endPointURL.com:443
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.3.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Proxy-Connection: Keep-Alive
>
< HTTP/1.0 200 Connection established
<
* Proxy replied OK to CONNECT request
* Initializing NSS with …
Run Code Online (Sandbox Code Playgroud)

shell ssl curl web-services certificate

17
推荐指数
2
解决办法
4万
查看次数

无法使用libcurl访问需要客户端身份验证的站点

我正在使用下面的snipped来设置证书和密钥以进行客户端身份验证.

  curl_easy_setopt(curl,CURLOPT_SSLCERT,"clientCert.pem");
  curl_easy_setopt(curl,CURLOPT_SSLCERTPASSWD,"changeit");
  curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"PEM");
  curl_easy_setopt(curl,CURLOPT_SSLKEY,"privateKey.pem");
  curl_easy_setopt(curl,CURLOPT_SSLKEYPASSWD,"changeit");
  curl_easy_setopt(curl,CURLOPT_SSLKEYTYPE,"PEM");
Run Code Online (Sandbox Code Playgroud)

证书没有密码,我不知道为什么选择SSLCERTPASSWD存在,我只提供了一个虚拟值.当我在Linux上运行程序时,我得到错误代码58和错误消息无法设置私钥文件:'privateKey.pem'类型PEM

但是在Windows上,我无法使用客户端证书(找不到密钥或错误的密码?)

它似乎暗示证书和密钥不匹配但我不知道如何.我使用openssl命令从p12文件中提取了证书和密钥.我用来提取密钥的命令是

openssl.exe pkcs12 -in client.p12 -nocerts -out privateKey.pem
Run Code Online (Sandbox Code Playgroud)

用于提取证书的命令是

openssl.exe pkcs12 -in client.p12 -nokeys -out clientCert.pem
Run Code Online (Sandbox Code Playgroud)

p12文件已成功用于浏览器以访问客户端身份验证URL.在我开枪之前请帮忙.

编辑:以下是私钥和证书相互对应的证明:

[debugbld@nagara ~/curlm]$ openssl x509 -noout -modulus -in clientCert.pem | openssl md5
d7207cf82b771251471672dd54c59927

[debugbld@nagara ~/curlm]$ openssl rsa -noout -modulus -in privateKey.pem | openssl md5
Enter pass phrase for privateKey.pem:
d7207cf82b771251471672dd54c59927
Run Code Online (Sandbox Code Playgroud)

那么为什么它不能工作呢?

authentication client curl

5
推荐指数
1
解决办法
1万
查看次数

带有客户端证书的libcurl,我得到一个错误“无法加载客户端密钥-8178。* NSS错误-8178”

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

  • 即将connect()到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资源;

//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();
Run Code Online (Sandbox Code Playgroud)

libcurl

5
推荐指数
1
解决办法
2249
查看次数

标签 统计

curl ×2

authentication ×1

certificate ×1

client ×1

libcurl ×1

shell ×1

ssl ×1

web-services ×1