Curl - 无法使用 p12 证书进行连接

2022-08-31 00:38:11

我正在尝试使用 收集一些数据,连接到某些外部公司提供的服务。除了地址本身之外,他们还向我发送了稳定连接所需的证书文件。Curlp12

当我尝试使用它时,我得到以下错误:curl

#58: not supported file type 'P12' for certificate

到目前为止,我已经尝试更新curl和php-curl。一切都没有改变。

我的代码:

...
curl_setopt($ch, CURLOPT_SSLCERT, 'cert_path');
curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'P12');
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'my_pass');
...

有趣的是,这段代码在我们的生产环境中工作,而在我的本地机器(Linux Mint 16)上却不起作用。


答案 1

找到解决方案。

执行此操作的最简单方法是从文件中提取密钥和证书。.pem.p12

例如(测试于):linux

openssl pkcs12 -in file.p12 -out file.key.pem -nocerts -nodes
openssl pkcs12 -in file.p12 -out file.crt.pem -clcerts -nokeys

将在当前目录中创建密钥/证书对。

现在,要使用它:

curl_setopt($ch, CURLOPT_SSLCERT, 'file.crt.pem');
curl_setopt($ch, CURLOPT_SSLKEY, 'file.key.pem');
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'pass');
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, 'pass');

文件中的密码在哪里。pass.p12


答案 2

推荐