【问题标题】:Ignore Weak SSL Algorithm in PHP streamcontext/curl/soap忽略 PHP streamcontext/curl/soap 中的弱 SSL 算法
【发布时间】:2018-07-11 01:50:55
【问题描述】:

声明:一开始我想声明,我很清楚(并想告知其他人)这不是正确的做事方式。如果找到了灵魂,将其作为最后的手段。

我的问题是弱算法。并且找不到跳过检查的方法。
向我公开端点的公司表示它是安全的,他们不会升级 SSL 证书。我知道这是不安全的,但我无能为力,必须服从他们的决定。

我得到错误 file_get_contents():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:14082174:SSL 例程:ssl3_check_cert_and_algorithm:dh 密钥太小
file_get_contents():无法在...中启用加密

我的代码是:

$context = stream_context_create([
    'http' => [
        'timeout' => 5,
    ],
    'ssl' => [
        // set some SSL/TLS specific options
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    ]
]);
var_dump(file_get_contents($wsdl, false, $context));

在浏览器中我得到SSL_ERROR_WEAK_SERVER_EPHEMERAL_DH_KEY 和关于弱Diffie Hellman 键的信息。

我正在寻找禁用此检查的方法。

最好通过我可以在SoapClient 中使用的streamContext

【问题讨论】:

  • 而不是 file_get_contents 使用 curl(),它有一个忽略 ssl 问题的标志
  • 据我所知,@rtfm first curl 不适用于soapClient。做不到。其次,curl 允许忽略对等和服务器检查,但不能忽略弱算法检查
  • 我认为 curl 提供的标志与这里使用的 verify_peer 标志相同。我认为这里的问题是您的系统比他们的系统更新,并且拒绝使用它现在知道的不安全技术。为了解决这个问题,您可能需要将您的 openssl 库降级到一个过时的版本。
  • @AbraCadaver 看到那个帖子。从它我知道我必须禁用算法检查。但找不到方法

标签: php ssl soap diffie-hellman


【解决方案1】:

您需要禁用 Diffie Hellman 验证:

$context = stream_context_create(array(
    'ssl' => array(
        'ciphers' => 'DEFAULT:!DH',
...

如果需要禁用您需要的证书验证:

$context = stream_context_create(array(
    'ssl' => array(
        'ciphers'           => 'DEFAULT:!DH',
        'verify_peer'       => false,
        'verify_peer_name'  => false,
        'allow_self_signed' => true
    )
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2023-03-18
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    相关资源
    最近更新 更多