hat*_*apo 8 php https curl openssl
我有一个 web 应用程序,它对不同的站点进行 curl 调用以获取数据。由于我的网络空间提供商 (ionos) 对服务器进行了一些更改,因此 curl 调用不再有效。
我的 curl 调用如下所示:
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$sResult = curl_exec($ch);
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)
它没有用。$sResult 为空。我改变了我的代码并尝试
$test = file_get_contents($link);
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
PHP Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small
Run Code Online (Sandbox Code Playgroud)
我的 curl 调用或 file_get_contents 调用中是否缺少某些内容?
Ind*_*rek 15
此错误的通常建议是将CipherString参数设置/etc/ssl/openssl.cnf为DEFAULT:@SECLEVEL=1。
在 PHP 中,您可以通过以下方式实现相同的目的curl_setopt():
curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'DEFAULT@SECLEVEL=1');
Run Code Online (Sandbox Code Playgroud)
这是比编辑更好的解决方案,openssl.cnf因为它允许您仅针对一个特定调用而不是系统范围内放宽安全性。
小智 5
如果您正在使用 file_get_contents() 函数,这很好用
$context=array(
"ssl"=>array(
'ciphers' => 'DEFAULT:!DH'
),
);
$json = file_get_contents($url, false, stream_context_create($context));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11648 次 |
| 最近记录: |