27

我正在尝试通过 Centos 6 系统上的 PHP curl 访问第三方服务,该系统附带针对 NSS 而不是 OpenSSL 编译的 curl 和 libcurl。

这给我带来了问题,每次我尝试访问该服务时都会收到此错误NSS: client certificate not found (nickname not specified)

我的理解是我需要在 NSS 数据库中安装证书。

我正在寻找有关如何执行此操作的分步说明(请记住,我需要它来处理从 Nginx 服务器调用的 PHP curl 函数)

谢谢

4

3 回答 3

25

尝试在证书文件名前加上“./”,或使用完整路径。从 curl 联机帮助页:

如果 curl 是针对 NSS SSL 库构建的,则此选项 [--cert] 可以告诉 curl 在环境变量 SSL_DIR(或默认情况下 /etc/pki/nssdb)定义的 NSS 数据库中使用的证书昵称。如果 NSS PEM PKCS#11 模块 (lib-nsspem.so) 可用,则可以加载 PEM 文件。如果要使用当前目录中的文件,请在其前面加上“./”前缀,以免与昵称混淆。

(强调我的)

或者,这里有一些导入 NSS 证书数据库的说明,虽然我没有使用它们: http ://rcritten.fedorapeople.org/nss_compat_ossl.html

于 2013-04-10T15:19:42.753 回答
2

我在 Centos 7 上遇到了同样的问题。调试后它与超时有关。

因此,如果您看到此问题并使用curl_setopt($curl, CURLOPT_TIMEOUT_MS, 300); 则检查需要多长时间。如果它在您的超时期限附近。那是问题所在,与任何证书无关。

在超时的情况下,我期待 Curl 会出现一些超时错误,但这似乎没有发生。

于 2019-03-08T08:47:23.110 回答
0

当我尝试访问使用简单密码身份验证的 FTPS 服务器时输入错误密码时,我收到了与 curl 相同的错误消息。它与证书无关。

于 2016-02-05T16:20:42.333 回答