我需要打开由私人公司的证书颁发机构签名的远程资源。目前,PHP无法打开资源,因为它不信任证书签名者。
我知道您可以使用流上下文对象来执行证书,但是我正在寻找一种方法来为PHP提供新的证书颁发机构的公钥,并让file()
和类似的方法信任由该证书颁发机构签名的远程证书,而不必创建流每次的情况。
有没有一种方法可以向php.ini中添加新的证书颁发机构?我尝试将CA的公钥添加到/etc/ssl/certs/
,但似乎无法识别。
Curl使用单个文件,其中包含所有CA。要将新的CA添加到Curl / PHP,您需要获得完整的捆绑软件,将证书添加到捆绑软件,然后告诉PHP使用自定义捆绑软件。
从CURL下载最新的捆绑包并将其保存到/etc/ssl/certs/cacert.pem
:
curl --remote-name --time-cond cacert.pem https://curl.haxx.se/ca/cacert.pem
编辑/etc/ssl/certs/cacert.pem
文件,然后将新的CA公共密钥添加到底部。
编辑php.ini
该行并将其添加openssl.cafile=/etc/ssl/certs/cacert.pem
到顶部(或底部)。
重新启动Web服务器。