如何让 PHP 8.3.10 访问我的本地 Windows 证书?

问题描述 投票:0回答:1

我的服务器没有 SSL 证书以获取更多上下文。

我只在 IIS 中观察到此问题,这里有一些示例代码,您可以使用它来复制我的问题

<?php
 $ch = curl_init();
 $url = "https://example.com";
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 $response = curl_exec($ch);
 echo $response;

我只能使用 cURL 和

file_get_contents()
通过 HTTP 协议发出成功的 http 请求,但是在向 https URL 发出请求时使用
file_get_contents()
时会出现错误,而在使用 cURL 向 https URL 发出请求时则不会出现任何错误。

我试图搞乱

openssl.cafile
curl.cainfo
,但从这个答案没有成功。

还要在

allow_url_fopen = On
中设置
allow_url_include = On
php.ini
并根据 此 PHP 文档

启用 php openSSL 扩展

不过,我只在 IIS 下运行的 PHP 文档中观察到此问题。在 PHP 交互式 shell 中,它按预期工作。

注意:我找到了解决方案,但它只是有限的

事实证明,我必须将 openssl.cafile

curl.cainfo
 设置为 
cacert.pem 文件,您可以在此处获取(或任何其他证书包),并且当您在 IIS 中运行 PHP 时,您必须
授予当前应用程序池身份对证书的读取权限这样PHP的配置实际上可以读取它。

php http ssl curl iis
1个回答
1
投票
事实证明,我必须将

openssl.cafile

curl.cainfo
设置为
cacert.pem 文件,您可以在此处获取
(或任何其他证书包),当您在 IIS 中运行 PHP 时,您必须
授予当前应用程序池身份对证书的读取权限这样PHP的配置实际上可以读取它。

注意:这并没有从整体上解决我的问题,而且我经常遇到 SSL 版本错误

© www.soinside.com 2019 - 2024. All rights reserved.