如何将证书颁发机构添加到PHP,以便file()函数信任由它签名的证书?

Nic*_*ick 5 php ssl

我需要打开由私人公司的证书颁发机构签名的远程资源。目前,PHP无法打开资源,因为它不信任证书签名者。

我知道您可以使用流上下文对象来执行证书,但是我正在寻找一种方法来为PHP提供新的证书颁发机构的公钥,并让file()和类似的方法信任由该证书颁发机构签名的远程证书,而不必创建流每次的情况

有没有一种方法可以向php.ini中添加新的证书颁发机构?我尝试将CA的公钥添加到/etc/ssl/certs/,但似乎无法识别。

Nic*_*ick 5

Curl使用单个文件,其中包含所有CA。要将新的CA添加到Curl / PHP,您需要获得完整的捆绑软件,将证书添加到捆绑软件,然后告诉PHP使用自定义捆绑软件。

  1. 从CURL下载最新的捆绑包并将其保存到/etc/ssl/certs/cacert.pem

curl --remote-name --time-cond cacert.pem https://curl.haxx.se/ca/cacert.pem

  1. 编辑/etc/ssl/certs/cacert.pem文件,然后将新的CA公共密钥添加到底部。

  2. 编辑php.ini该行并将其添加openssl.cafile=/etc/ssl/certs/cacert.pem到顶部(或底部)。

  3. 重新启动Web服务器。