无法使用libcurl访问需要客户端身份验证的站点
发布时间:2020-12-14 00:59:37 所属栏目:Linux 来源:网络整理
导读:我正在使用下面的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_seto
我正在使用下面的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,CURLOPT_SSLKEYTYPE,"PEM"); 证书没有密码,我不知道为什么选择SSLCERTPASSWD存在,我只提供了一个虚拟值. 但是在Windows上,我得到了 它似乎暗示证书和密钥不匹配但我不知道如何.我使用openssl命令从p12文件中提取了证书和密钥. openssl.exe pkcs12 -in client.p12 -nocerts -out privateKey.pem 用于提取证书的命令是 openssl.exe pkcs12 -in client.p12 -nokeys -out clientCert.pem 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 那么为什么它不能工作呢? 解决方法
使用命令行curl,我使用.pem文件也得到了同样的错误,该文件也是从p12文件中使用openssl获得的,p12在浏览器中导入时也能正常进行客户端身份验证.就像你描述的那样,我想.
我的问题是由于.pem文件没有以正确的顺序列出证书引起的:似乎文件中的每个证书都必须跟随其颁发者证书.我编辑了文件并更改了部分的顺序,curl很高兴. 为了记录,我的原始.p12文件是通过从Firefox备份证书获得的. 另请注意,就我而言,我没有收到提示输入密码的信息 curl: (58) unable to set private key file: 'alice.pem' type PEM 在密码提示之前 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |