错误:14094410:SSL 例程:ssl3_read_bytes:sslv3 警报握手失败

Posted

技术标签:

【中文标题】错误:14094410:SSL 例程:ssl3_read_bytes:sslv3 警报握手失败【英文标题】:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure 【发布时间】: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);

【问题讨论】:

【参考方案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 证书它只是创建一个空文件你能告诉我问题是什么

以上是关于错误:14094410:SSL 例程:ssl3_read_bytes:sslv3 警报握手失败的主要内容,如果未能解决你的问题,请参考以下文章

Apple 不保证推送的交付?

无法解决此错误:错误:14077458:SSL 例程:SSL23_GET_SERVER_HELLO:reason(1112) - 关于尝试啥的任何想法?

错误消息:错误:14090086:SSL例程:ssl3_get_server_certificate:证书验证失败

错误:错误:14077410:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报握手失败

卷曲错误:错误:1408F10B:SSL 例程:SSL3_GET_RECORD:错误的版本号

SSL 错误消息:错误:1416F086:SSL 例程:tls_process_server_certificate:证书验证失败