忽略PHP中的弱SSL算法streamcontext / curl / soap

时间:2018-01-31 20:25:48

标签: php ssl soap diffie-hellman

声明:一开始我想说的是,我很清楚(并且想通知其他人)这不是正确的做事方式。如果发现了灵魂,请将其作为最后的手段使用。

我的问题是弱算法。并且无法找到跳过支票的方法 暴露我端点的公司表示它是安全的,并且他们不会升级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

1 个答案:

答案 0 :(得分:0)

您需要禁用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
    )
);