我正在尝试调用需要客户端证书进行身份验证的服务。
我已经获取了pfx文件,并使用以下openSSL命令创建了一个pem文件和一个密钥文件:
创建公钥: openssl pkcs12 -in [yourfile.pfx] -clcerts -nokeys -out Mycert.pem
创建私钥: openssl pkcs12 -in [yourfile.pfx] -nocerts -out Mykey.key
然后我使用以下curl命令调用服务:
curl --cacert“ Mycert.pem” --key“ Mykey.key” –pass“ Mypass” --url https://service.myservice.co.uk -vs> curl-output.txt 2>&1
该请求将其发送到服务器,但不符合我的预期。查询服务器日志时,可以看到请求是用不同证书发送的。似乎curl上面的命令有问题,并且TLS握手然后说:“我不了解此证书,请允许我查看是否可以使用证书存储中的另一个证书”。然后,它将使用安装在我的计算机上的另一证书提出请求,而不是我指定的证书。
我已经尝试了上述命令的多种变体(使用--cert而不是--cacert,删除密钥文件,删除证书等),但是它们都没有任何区别。
我需要知道的是为什么会发生这种情况以及如何解决该问题。
我正在使用Windows 10,而我使用的curl的版本是“ curl-7.66.0-win64-mingw”
非常感谢