解决PHP curl https时error 77(Problem with reading the SSL CA cert (path? access rights?))

问题

服务器环境为CentOS,php-fpm,使用curl一个https站时失败,打开curl_error,捕获错误:Problem with reading the SSL CA cert (path? access rights?)

解决方案:

  1. sudo yum install ca-certificates (无论有没有,安装确认一下)
  2. 重启php-fpm,这步比较重要,更改底层的东西时一定要重启一下
  3. curl时设置:curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0)

相关知识点

什么是CA Certificates?

Certification authority (CA)
证书颁发机构(Certification authority 简称CA)证书是由CA向其自身或二级CA颁发的证书,用于在两个CA之间创建一个定义的关系。

由CA颁发给自己的证书称为受信任的根证书,因为它旨在为CA层次结构建立最终信任点。

一旦信任的根建立起来,它就可以用来授权下属的CA代表它颁发证书。

虽然CA之间的关系最常见是层次化的,CA证书也可以用于在两个不同的公钥基础设施(Public Key Infrastructure缩写PKI)层次结构中建立CA之间的信任关系。

在所有这些情况下,CA证书对于为PKI中使用的所有终端实体证书定义证书路径和使用限制至关重要。

CA证书解决的问题

当终端实体使用证书时,必须在终端实体证书和根CA之间验证信任关系。
根CA和终端实体证书之间的信任关系是通过验证证书链中所有证书的内容直到根CA来验证的。

为PKI建立的准则和程序定义了信任。这包括终端实体证书用于某些目的并阻止用于其他目的的能力。这些准则和程序以多种方式实施。例如,PKI的信任和安全可以通过两种方式建立:

  • 为确保承载CA的服务器的物理安全性而采取的步骤。
  • 委派CA的管理角色的方式。

但是,针对组织需求的CA证书的适当配置是组织必须实施适当PKI安全性的最强大的工具之一。CA证书包含用于规范其颁发的CA的特殊配置数据。
这些配置选项可以:

  • 定义组织命名空间,由其发布和信任下属CA颁发的证书。
  • 指定由下属CA颁发的证书的可接受使用。
  • 定义必须遵循的发布准则,以便下属CA颁发的证书被视为有效。
  • 在单独的认证层次之间创建一个托管信任。

参考
https://technet.microsoft.com/en-us/library/cc778623(v=ws.10).aspx

发表评论

电子邮件地址不会被公开。 必填项已用*标注