【发布时间】:2015-06-30 05:22:26
【问题描述】:
我正在尝试对需要客户端证书的第三方 API 进行测试调用。我通过 openssl 使用此命令生成了一个新证书:
req -new -newkey rsa:2048 -nodes -out mycsr.csr -keyout mykey.key
然后我将 csr 发送给他们,他们将 mycert.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) 无法使用客户端证书(未找到密钥或密码错误?)”。密钥没有密码。所有证书/密钥文件都有 777 权限。
过去我在证书方面工作不多,我觉得我错过了一些东西,尤其是因为我似乎只有一个证书。其他公司发给我的证书是 cacert 还是我的客户证书?我是否将私钥连接到错误的证书?
我在网上找到了很多关于这个的零碎信息,但是如果有人知道关于这个主题的好教程,我也非常感激。
【问题讨论】:
标签: ssl curl ssl-certificate