错误设置证书验证位置

时间:2017-01-23 21:25:20

标签: php curl

OS: Ubuntu 16.01
PHP: 7/0

基于一些谷歌搜索,以及StackOverflow上的问题输入,我设置了以下Curl选项:

CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,   
CURLOPT_CAINFO  = '/etc/ssl/certs',

我验证了/ etc / ssl / certs目录存在,并且它是最新的。

我还修改了文件/etc/php/7.0/cli/php/ini:

openssl.capath='/etc/ssl/certs'

当我尝试进行Curl调用时,出现以下错误:

[error] => error setting certificate verify locations:
    CAfile: /etc/ssl/certs
    CApath: /etc/ssl/certs

我将/ etc / ssl / certs中的权限编辑为:

rwxr-xr-x

但我得到同样的错误。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

只有在您要使用的证书只在一个文件中时,才应设置

CURLOPT_CAINFO。如果你想使用整个目录(就像你通常想在Ubuntu上做的那样),只需设置CURLOPT_CAPATH值。

来自the docs

  

CURLOPT_CAINFO:包含一个或多个证书以验证对等方的文件的名称。

     

CURLOPT_CAPATH:包含多个CA证书的目录。