Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP CURL-CURL错误35:错误:1414D172:SSL例程:tls12\u check\u peer\u sigalg:错误的签名类型_Php_Curl_Openssl - Fatal编程技术网

PHP CURL-CURL错误35:错误:1414D172:SSL例程:tls12\u check\u peer\u sigalg:错误的签名类型

PHP CURL-CURL错误35:错误:1414D172:SSL例程:tls12\u check\u peer\u sigalg:错误的签名类型,php,curl,openssl,Php,Curl,Openssl,我想在PHP7.3.90中发出一个curl请求 curl -V curl 7.64.0 (x86_64-pc-linux-gnu) libcurl/7.64.0 OpenSSL/1.1.1d zlib/1.2.11 libidn2/2.0.5 libpsl/0.20.2 (+libidn2/2.0.5) libssh2/1.8.0 nghttp2/1.36.0 librtmp/2.3 Release-Date: 2019-02-06 Protocols: dict file ftp ftps g

我想在PHP7.3.90中发出一个curl请求

curl -V
curl 7.64.0 (x86_64-pc-linux-gnu) libcurl/7.64.0 OpenSSL/1.1.1d zlib/1.2.11 libidn2/2.0.5 libpsl/0.20.2 (+libidn2/2.0.5) libssh2/1.8.0 nghttp2/1.36.0 librtmp/2.3
Release-Date: 2019-02-06
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL 

答案是

"cURL error 35: error:1414D172:SSL routines:tls12_check_peer_sigalg:wrong signature type (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)"
我在curl命令中遇到了同样的问题,我用

[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=1
而不是

[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=2

我必须使用哪个卷曲选项来解决此错误


谢谢

在Debian上从OpenSSL 1.1.0升级到1.1.1之后,我刚刚遇到了这个问题

我在这里找到了解决办法


/etc/ssl/openssl.cnf中将
SECLEVEL 2
替换为
SECLEVEL 1
,因为
SECLEVEL 2
可以防止SHA1加密,这在我的案例中是Moneris所必需的,它似乎只支持不推荐使用的SHA1签名。

我知道这个问题很老了,但我在使用一些旧的Coughermescaugh api时遇到了同样的问题

我也不想将整个系统的seclevel设置为1。 您需要的是以下内容:

 curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'DEFAULT@SECLEVEL=1');
只要将这段代码放入您的应用程序中,您就可以满足这一请求。
当然,这不是最安全的方法,但是当Api设置不正确时,你没有选择。

在Ubuntu 20上升级后,我遇到了同样的问题

解决方案是升级到openssl-1.1.1g。默认情况下,Ubuntu20使用openssl-1.1.1f,但效果不佳


对于这个仍然未打包的openssl版本。

。这可能是一个安全风险!如果您在Maxim的回答中所述的
/etc/ssl/openssl.cnf
中对其进行了更改,则只需重新启动PHP服务。
 curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'DEFAULT@SECLEVEL=1');