【问题标题】:NSS: client certificate not found (nickname not specified)?NSS:未找到客户端证书(未指定昵称)?
【发布时间】:2013-03-24 07:40:18
【问题描述】:

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

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

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

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

谢谢

【问题讨论】:

    标签: curl openssl centos libcurl centos6


    【解决方案1】:

    尝试在证书文件名前加上“./”,或使用完整路径。来自 curl 手册页:

    如果 curl 是针对 NSS SSL 库构建的,那么这个选项 [--cert] 可以告诉 curl 使用的证书的昵称 NSS 数据库由环境变量 SSL_DIR(或由 默认 /etc/pki/nssdb)。如果 NSS PEM PKCS#11 模块(lib- nsspem.so) 可用,然后可以加载 PEM 文件。 如果你 要使用当前目录中的文件,请在它前面 带有“./”前缀,以避免与昵称混淆。

    (强调我的)

    另外,这里有一些关于导入 NSS 证书数据库的说明,尽管我没有使用它们: http://rcritten.fedorapeople.org/nss_compat_ossl.html

    【讨论】:

    • 它对我不起作用...我的 curl 不是用 nsspem 编译的。所以我正在使用 nss 数据库......但 curl 永远找不到我的密钥友好名称。即使我设法用 certutil 列出键名...
    • 这对我不起作用,但引导我朝着正确的方向前进。我的 CURL 是用 NSS 编译的(用 curl -version 检查)——这篇文章是最终为我工作的解决方案:stackoverflow.com/questions/19265100/…
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2012-09-06
        • 2017-07-07
        • 2017-12-09
        • 1970-01-01
        • 2021-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-06
        相关资源
        最近更新 更多