【问题标题】:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure错误:14094410:SSL 例程:ssl3_read_bytes:sslv3 警报握手失败
【发布时间】:2019-08-16 12:05:39
【问题描述】:

我正在尝试连接到需要授权证书的服务,我在我的机器上导入证书,当我通过我的 google chrome 浏览器直接点击服务器时,它给了我完美的结果,但是当我从php curl请求它给了我sslv3警报握手失败错误。 (错误:14094410:SSL 例程:ssl3_read_bytes:sslv3 警报握手失败)

<?php
$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://example.com",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_SSL_CIPHER_LIST => SSLv3,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_SSLVERSION => 7,
  CURLOPT_SSLVERSION => 7,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "cache-control: no-cache"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

var_dump($response);
var_dump($err);

【问题讨论】:

    标签: php ssl curl sslv3


    【解决方案1】:

    您需要将证书导入 CURL 并设置任何需要的选项

      $caFile = "ca.pem";
      $keyFile = "key.pem";
      $certFile = "client.pem";
      $certPass = "xxxxxx";
    
      curl_setopt($ch, CURLOPT_CAINFO, $caFile);
      curl_setopt($ch, CURLOPT_SSLKEY, $keyFile);
      curl_setopt($ch, CURLOPT_SSLCERT, $certFile);
      curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $certPass);
    

    您可以查看每个 CURL 选项的信息 from here

    【讨论】:

    • 首先感谢您的帮助,亲爱的,我有 3 个证书文件,这些文件的扩展名是 .pfx 我将这些证书导入到我的机器中,现在我必须通过这种方式包含或首先转换我的.pem 中的文件,然后使用它
    • 当然,如果解决了我的问题,我一定会支持它
    • 我在等着呢
    • 在将它们添加到 CURL 之前,您必须将它们全部转换为 .pem,请关注this link
    • 我使用转换为 pem 证书它只是创建一个空文件你能告诉我问题是什么
    猜你喜欢
    • 2014-06-27
    • 2015-04-02
    • 1970-01-01
    • 2014-12-10
    • 2016-12-12
    • 2015-12-02
    • 2016-08-14
    • 2017-10-13
    • 2019-12-21
    相关资源
    最近更新 更多