php - curl "Peer' s 公钥无效。”无法加载客户端 key : -8178 (SEC_ERROR_BAD_KEY)

标签 php ssl curl nss

我正在尝试将我的 PHP 应用程序连接到服务器,这需要通过私钥进行身份验证并且在公共(public)服务器上没有证书。

API 位置:https://b2b.postaonline.cz/

为了从浏览器访问 API,我安装了这些证书:http://www.postsignum.cz/certifikaty_autorit.html (PEM)

然后我可以连接我的 .pfx 证书,从 PostSignum 检索。

但是,我无法使用 curl 从 Linux 服务器进行连接。 Ofc,我已经搜索和测试了几个小时的东西——比如将私有(private)转换为 RSA 等等。

所以目前的状态是,我已经使用了 received .pfx 并提取了这样的东西:

 openssl pkcs12 -in certificate.pfx -out ca.pem -cacerts -nokeys
 openssl pkcs12 -in certificate.pfx -out client.pem -clcerts -nokeys
 openssl pkcs12 -in certificate.pfx -out key.pem -nocerts

之后,我使用 curl 进行连接:

$ curl -v  --key ./key.pem --cacert ./ca.pem --cert ./client.pem https://b2b.postaonline.cz/
*   Trying 193.150.24.113...
* Connected to b2b.postaonline.cz (193.150.24.113) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: ./ca.pem
  CApath: none
* unable to load client key: -8178 (SEC_ERROR_BAD_KEY)
* NSS error -8178 (SEC_ERROR_BAD_KEY)
* Peer's public key is invalid.
* Closing connection 0
curl: (58) unable to load client key: -8178 (SEC_ERROR_BAD_KEY)

这是我在所有变体中得到的东西。

注意:当我将我的 certificate.pfx 加载到浏览器时,连接仍然不安全。所以我从 PostSignum 证书站点下载了以下内容并将它们加载到浏览器中

Postsignum Root QCA 2
Postsignum Public CA 2

在那之后我就可以从浏览器连接了。

我认为这很重要,我也需要在 curl 中做,但我不知道怎么做。使用仅从 certificate.pfx 中提取的 ca.pem 和 client.pem - 我认为 curl 遇到了与浏览器在加载其他 Authoritiy 证书之前遇到的问题相同的问题。知道如何使用它吗?

谢谢。

最佳答案

合并了 2 个问题,现在已修复 - 感谢 strace。

  1. 如其他帖子所述,我必须提供 RSA 私钥
  2. 当使用带有密码的本地私钥文件时,我们无法提供 它作为 ./key:pass,但是通过使用 --pass {phrase} 选项

关于php - curl "Peer' s 公钥无效。”无法加载客户端 key : -8178 (SEC_ERROR_BAD_KEY),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41170287/

相关文章:

php - mysql_affected_rows 在 foreach 循环中没有给出所需的结果

javascript - PHP JavaScript HTML 问题

Java SSLException : hostname in certificate didn't match for www. googleapis.com

php - 如何使用 cURL 获取 JSON 数据并解码数据?

php - 删除记录 MethodNotAllowedHttpException

php - Wordpress 索引页面上的特定 CSS

javascript - NodeJS SSL 验证不正确

database - 如何将SSL添加到后端mysql数据库并使用Laravel连接

php - 为什么我从 curl 得到 HTTP_CODE 0?

pdf - Solr 查询 pdf 文件,不返回突出显示的内容