gpt4 book ai didi

PHP CURL 和 SSL 证书(或证书链)

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:22 26 4
gpt4 key购买 nike

美好的一天!

我有可通过 SSL (https://) 访问的 REST API。我想将正确的证书(或证书链)与我编写的 PHP 和 CURL 脚本一起放置以发出请求。

以下是来 self 的目标 (http://api.vkontakte.ru) 的证书在 Firefox 中的样子:

http://speedcap.net/img/bc687485819715c65d6fe1e4ca1fdc40/1a2be.png

这是从 Firefox 保存的“PEM 格式的证书链 X.509”的片段(此处描述:http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/):

-----BEGIN CERTIFICATE-----
MIIFVzCCBD+gAwIBAgIHKx5Ov2FOejANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
[..skip...]
0npsf5fkvT8E13NgVY0PK6V/baMTlTgWXKQZ
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVMx
[..skip...]
qDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZEjYx8WnM25sgVjOuH0aBsXBTWV
U+4=
-----END CERTIFICATE-----

这是 CURL init 的代码示例:

$this->ch = curl_init();
curl_setopt_array($this->ch, array(

CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_AUTOREFERER => TRUE,
CURLOPT_FOLLOWLOCATION => TRUE,

CURLOPT_SSL_VERIFYPEER => TRUE,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CAINFO => <path to my cert>,
));

我遇到了 CURL 错误 60 (CURLE_SSL_CACERT),提示证书错误。

我尝试过的:

  • 我已验证我的证书文件已被使用,因为当我指定错误的路径时它会提示找不到证书(错误 70)

  • 我已通过 Facebook SDK 及其证书链检查我的 CURL 是否适用于此类设置

  • 我尝试导出不同的链(包括或不包括)链中的最后一个证书

  • 已尝试 CURLOPT_SSL_VERIFYHOST => 1

欢迎任何想法!

最佳答案

Vkontakte 几年前从 vkontakte.ru 域转移到 vk.com。他们也改变了他们的 api 处理程序 url。这是我的解决方案:

  1. 打开https://vk.com/在火狐中
  2. 为本网站导出证书链为 X.509
  3. http://api.vkontakte.ru 更改目标网址至 https://api.vk.com/

这是我的带有 curl 选项的代码:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() ."/ffchainvk.crt"); // ok

ffchainvk.crt 是导出证书链的文件。

关于PHP CURL 和 SSL 证书(或证书链),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7130271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com