我正在尝试通过PHP curl在Centos 6系统上访问第三方服务,该系统附带了针对NSS而不是OpenSSL编译的curl和libcurl。
这对我造成了问题,每次我尝试访问该服务时都会收到此错误NSS: client certificate not found (nickname not specified)
。
我的理解是我需要在NSS数据库中安装证书。
我正在寻找有关如何执行此操作的分步说明(请记住,我需要使用这个来处理从Nginx服务器调用的PHP curl函数)
由于
答案 0 :(得分:20)
尝试使用“./”或使用完整路径为证书文件名添加前缀。从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
答案 1 :(得分:0)
当我在尝试访问使用简单密码身份验证的FTPS服务器时输入了错误的密码时,我收到了与curl相同的错误消息。它与证书无关。
答案 2 :(得分:0)
我在Centos 7上遇到了同样的问题。调试后,它与超时有关。
因此,如果您看到此问题并使用curl_setopt($ curl,CURLOPT_TIMEOUT_MS,300); 然后检查需要多长时间。如果是在您的超时期限附近。那是问题,与任何证书无关。
我期望Curl发生超时错误,但这似乎没有发生。