我正在尝试对一个需要客户端证书的第三方API进行测试调用。我使用openssl命令生成了一个新的证书:
req -new -newkey rsa:2048 -nodes -out mycsr.csr -keyout mykey.key
我随后将CSR发送给他们,他们回复了我的cert.crt。我将证书和密钥拼接在一起:
cat mycert.crt mykey.key > mycertandkey.pem
最后,我将mycert.crt添加到ca-certificates文件夹和ca-certificates.conf中,并运行“update-ca-certificates --fresh”。
现在,我正在尝试使用以下命令从bash中调用curl:
curl -X GET --cert mycertandkey.pem -H 'Accept-Encoding: gzip,deflate' -H 'Content-Type: application/json' https://api.URL.com
我也尝试过以下方法:
curl -X GET --cert mycertandkey.pem --cacert mycert.crt -H 'Accept-Encoding: gzip,deflate' -H 'Content-Type: application/json' https://api.URL.com
并且:
curl -X GET --cert mycertandkey.pem --cacert mycert.crt --key mykey.key -H 'Accept-Encoding: gzip,deflate' -H 'Content-Type: application/json' https://api.URL.com
我尝试了所有其他的组合方式,但总是遇到错误“curl: (58) unable to use client certificate (no key found or wrong pass phrase?)”。密钥没有密码。所有cert/key文件均为777权限。
过去我没有太多处理证书的经验,感觉可能漏掉了什么,特别是因为我似乎只有一个证书。那个公司发送给我的是cacert还是客户端证书?我是否将私钥连接到了错误的证书上?
我在网上找到了很多关于这个问题的零散信息,但如果有人知道这个主题的好教程,我会非常感激的。