gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:19:14 25 4
gpt4 key购买 nike

我正在使用下面的片段来设置客户端身份验证的证书和 key 。

  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");

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

但是在 Windows 上我得到
无法使用客户端证书(未找到 key 或密码错误?)

似乎表明证书和 key 不匹配,但我不知道如何。我已经使用 openssl 命令从 p12 文件中提取了证书和 key 。
我用来提取 key 的命令是
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 文件时遇到了同样的错误,该文件也是使用 openssl 从 p12 文件中获取的,当在浏览器中导入时,p12 也能够正常进行客户端身份验证。就像你描述的那样,我想。

我的问题是因为 .pem 文件没有以正确的顺序列出证书:似乎文件中的每个证书都必须跟随其颁发者证书。 我编辑了文件并更改了部分的顺序,curl 很高兴 .

作为记录,我的原始 .p12 文件是通过备份来自 Firefox 的证书获得的。

另请注意,就我而言,我没有收到输入密码的提示,而是收到了

curl: (58) unable to set private key file: 'alice.pem' type PEM

在密码提示之前

关于authentication - 无法使用 libcurl 访问需要客户端身份验证的站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6124289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com