问题描述
我知道之前有人问过这个问题,但我认为我的情况有点不同:
当我尝试在 PHP 中使用 curl 时,在尝试与苹果推送通知服务 (https://api.push.apple.com/3/device/) 交互时收到以下错误
Curl failed: NSS: client certificate not found (nickname not specified)
这是因为在 centos 上,php 是使用 curl 构建的,使用 NSS 而不是 OpenSSL。
到目前为止我尝试过的:
- 重新编译 curl(有效!二进制可以执行调用,但 php 不能)
- 重新编译 php(没有用,因为它需要安装 curl-devel,这可能会再次链接到 NSS)
所以我的下一个方法是解决这个 NSS 问题,但结果证明 NSS 是一个非常糟糕的软件,因为只是简单地重命名导入的 Let-ecnrypt 证书不起作用.. ..
有人可以请向我解释如何解决这个问题吗?我已经尝试将 let encrypt 证书导入存储在 /etc/pki/nssdb 中的 NSS 数据库中,这奏效了 - 但不幸的是,PHP 无法识别该证书,即使我在 CURLOPT_SSLCERT => 'nickname' 中提供了它的昵称。>
也许这是因为它的昵称中有特殊字符,我无法更改,因为 NSS 无法重命名(lol)。
当我直接尝试使用 php 提供证书时
CURLOPT_SSLCERT => $certFile,CURLOPT_SSLKEY => $keyFile,CURLOPT_CAINFO => $caCertFile
我明白了:
Curl failed: Peer's Certificate issuer is not recognized.
我也关闭了同行验证
CURLOPT_SSL_VERIFYPEER => FALSE
结尾
Curl failed: security library failure
有没有人可以教我如何修复它或如何使用 openssl 构建 curl 在 centos 上构建 php?
BR,
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)