【问题标题】:I need same python command in php我需要在 php 中使用相同的 python 命令
【发布时间】:2020-05-22 09:48:57
【问题描述】:

我有 python 代码向华为 USG 设备发送 curl 请求,此代码可以毫无问题地接收信息,但由于我的项目是 php 项目,所以我尝试向同一华为 USG 发送 Curl 请求但我收到此错误

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

我认为这个问题是针对 TLSV1_3 的,我需要防止代码将它作为 Hello packet 发送。 这是执行此任务的 pythin 命令,(防止 TLSV1_3)

context.options |= ssl.OP_NO_TLSV1_3

ClientHello 不包含“支持的版本:TLS1.3
我需要 php 相同的命令,我该如何在 php 中执行此操作,因为如果我从代码中删除该行,我会得到与 php 代码中相同的错误

【问题讨论】:

    标签: python php ssl openssl tls1.2


    【解决方案1】:

    您应该能够通过使用CURLOPT_SSLVERSION Curl 选项来强制使用特定的 SSL/TLS 版本。与 Python 实现不同,我认为不可能排除特定版本,但如果您知道 TLS 1.2 可以工作,您可以通过以下方式强制它:

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
    // ...
    

    可用值列在curl_setopt manual page 上的CURLOPT_SSLVERSION 块旁边:

    CURL_SSLVERSION_DEFAULT (0)、CURL_SSLVERSION_TLSv1 (1)、CURL_SSLVERSION_SSLv2 (2)、CURL_SSLVERSION_SSLv3 (3)、CURL_SSLVERSION_TLSv1_0 (4)、CURL_SSLVERSION_TLSv1_1 (5) 或 CURL_SSLVERSION_TLSv1_2 (6) 之一。

    注意:

    最好不要设置它,让它使用默认值。鉴于 SSLv2 和 SSLv3 中的已知漏洞,将其设置为 2 或 3 非常危险。

    【讨论】:

    • 感谢您的回复我尝试了所有版本,但仍然有同样的问题,让我抓狂的是,我在另一台正在运行的 ubuntu 机器上尝试了相同的 php 代码,并在第 3 次尝试ubuntu 机器不工作,然后尝试使用第 4 台 ubuntu 机器工作,所以 php 代码在某些机器上工作但在某些机器上不工作
    猜你喜欢
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2013-09-16
    • 2014-08-31
    相关资源
    最近更新 更多