php curl: (35) error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small
问题汇总随手记
通过CURL请求一个https链接是提示
php curl: (35) error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small
通过搜索引擎查阅,发现可能是发起请求的服务器和被请求的服务器openssl环境不一致导致的
解决方式:ssl加密降级
// php curl请求 添加CURLOPT_SSL_CIPHER_LIST参数 curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'DEFAULT@SECLEVEL=1');
如果使用的是 guzzlehttp 扩展
$url = ""; $parameters = [ 'headers' => [], 'curl' => [ CURLOPT_SSL_CIPHER_LIST => 'DEFAULT@SECLEVEL=1' // 在该处设置降级 ] ]; $response = (new Client([ 'timeout' => 30, ]))->get($url, $parameters);
如果使用的是基于swoole系列的常驻型框架例如 hyperf、easyswoole 会报如下错误
PHP Fatal error: Uncaught Swoole\Curl\Exception: swoole_curl_setopt(): option[10083] is not supported in @swoole-src/library/core/Curl/Handler.php:653
需要在编辑安装swoole时加上编译选项 --enable-swoole-curl 来开启 swoole的 curl-native扩展
相关链接:
https://www.codenong.com/js47bd53ed3ee5/
https://www.coder.work/article/7530730
https://wiki.swoole.com/#/question/install?id=libcurl