【发布时间】:2018-06-25 11:25:11
【问题描述】:
在 SOAPUI 中,我仅在 SSL 设置中导入 .pfx 文件,然后我测试 API 方法,它可以正常工作。现在,我想在我的 PHP 应用程序中实现 SOAPUI 中的相同工作示例。所以,我使用 CURL PHP 来管理它。我所做的基本上是,我将在 SOAP UI 中使用的相同证书导入到我的 PHP 文件中。我想使用我的私钥使用我的公钥访问受保护的服务器。
更新日期:2018 年 6 月 29 日
PFX 文件:test-cert.pfx
$url = 'https://domain.com.ph/api/id_num';
$headers = array(
"Content-Type: application/json",
"token really_long_numbers",
);
$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, $url );
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_PORT , 443);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 2);
curl_setopt($curl, CURLOPT_SSLVERSION, 1);
curl_setopt($curl, CURLOPT_SSLCERT, "/Applications/XAMPP/xamppfiles/htdocs/d/client.pem");
curl_setopt($curl, CURLOPT_SSLKEY, "/Applications/XAMPP/xamppfiles/htdocs/d/key.pem");
curl_setopt($curl, CURLOPT_SSLKEYPASSWD, "******");
curl_setopt($curl, CURLOPT_CAINFO, "/Applications/XAMPP/xamppfiles/htdocs/d/cacert.pem");
我尝试使用以下命令从 PFX 生成 CA
openssl pkcs12 -in test-cert.pfx -out test-cert.pem -clcerts
与/或
openssl pkcs12 -in test-cert.pfx -out test-cert.pem -clcerts -nodes
现在是新错误
cURL 错误 #:SSL 证书问题:无法获取本地颁发者 证书
更新:2018 年 7 月 2 日
我已经在 php.ini 文件中添加了以下行,当然,还从 http://curl.haxx.se/ca/cacert.pem 下载了 cacert.pem 文件
[卷曲] ; CURLOPT_CAINFO 选项的默认值。这必须是一个 ;绝对路径。
curl.cainfo="/Applications/XAMPP/xamppfiles/etc/openssl/certs/cacert.pem"
openssl.cafile="/Applications/XAMPP/xamppfiles/etc/openssl/certs/cacert.pem"
我的php.ini配置文件所在位置
Configuration File (php.ini) Path: /etc
Loaded Configuration File: /etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
并在 curl 中添加以下行
CURLOPT_CAINFO => '/path/to/my/exported/cacert.pem'
CURLOPT_CAPATH => '/path/to/my/exported/cacert.pem'
我还在 apache 配置和 php.ini 中启用以下行 php_openssl.dll 和 mod_ssl
最后,我也在cacert.pem 位置下载了 ca-bundle.crt。
还是不行。
【问题讨论】: