当前位置:   article > 正文

PHP 使用 cURL HTTPS 协议证书认证问题

PHP 使用 cURL HTTPS 协议证书认证问题

参考 :

StackOverflow

CA证书下载地址 :

Click Me

PHP 使用 cURL 模块访问 https 时认证问题

  1. $ch = curl_init();
  2. $options = array(
  3. CURLOPT_URL=>$url,
  4. // 返回状态大于400时报错错误, 默认忽略
  5. CURLOPT_FAILONERROR=>true,
  6. // 将返回内容赋值到变量, 默认直接输出
  7. CURLOPT_RETURNTRANSFER=>false,
  8. // 汇报全部的连接过程和意外
  9. CURLOPT_VERBOSE => 1,
  10. /*
  11. 将verbose存储在资源中
  12. curl_setopt($ch, CURLOPT_STDERR, fopen('log.log', 'a+'));
  13. OR
  14. curl_setopt($session, CURLOPT_FILE, $logfh);
  15. */
  16. //显示头部信息
  17. // CURLOPT_HEADER => TRUE,
  18. CURLOPT_SSLVERSION => 3,
  19. // **关键部分**
  20. // 这里的路径指向认证服务器证书的CA证书, 不是服务器的证书
  21. CURLOPT_CAINFO=>'A:\xxx\cert\cacert.pem',
  22. //CURLOPT_CAPATH=>dirname(__FILE__),
  23. // 连接时使用 SSL/TLS 认证 , 一般和下面的 CURLOPT_SSL_VERIFYHOST 一起用
  24. // 忽略SSL/TLS认证, 2者同时为假
  25. CURLOPT_SSL_VERIFYPEER=>TRUE,
  26. // 认证证书中公用名称, 一般指证书中的 Common Name 即域名
  27. CURLOPT_SSL_VERIFYHOST=>2,
  28. //CURLOPT_HTTP200ALIASES=>[200],
  29. // 设置代理
  30. //CURLOPT_PROXY=>'http://127.0.0.1:8989',
  31. CURLOPT_POST=>true,
  32. // POST 内容, 需要urlencode处理一下
  33. CURLOPT_POSTFIELDS=>$data,
  34. // 设置头部
  35. CURLOPT_HTTPHEADER=>$header,
  36. );
  37. curl_setopt_array($ch, $options);
  38. try{
  39. $reponse = curl_exec($ch);
  40. if($reponse === false){
  41. throw new Exception("访问异常: " . curl_error($ch), 400);
  42. }
  43. }catch(Exception $e){
  44. echo $e->getMessage();
  45. }
  46. //echo $reponse;
  47. // print_r(curl_getinfo($ch));
  48. curl_close($ch);

转载于:https://www.cnblogs.com/dongyanglv/p/6669033.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/667981
推荐阅读
相关标签
  

闽ICP备14008679号