web-dev-qa-db-fra.com

PHP CURL - ERROR CURL 35: ERREUR: 1414D172: routines SSL: TLS12_CHECK_PEER_SIGALG: Type de signature incorrect

Je veux faire une demande de courbure dans PHP 7.3.90

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 

    $ch = curl_init();
    // 2. set the options, including the url
    curl_setopt($ch, CURLOPT_URL, "https://mydomain/get-token");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("App-Key: YOUR-KEY-HERE"));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);

et la réponse est

"cURL error 35: error:1414D172:SSL routines:tls12_check_peer_sigalg:wrong signature type (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)"

J'ai eu le même problème avec la commande CURL et je l'ai résolu avec

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

à la place de

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

https://github.com/curl/curl/issues/4097 et openssl v1.1.1 SSL_CHOOSE_CLIENT_VERSION protocole non pris en charge

Quelle option CURL que je dois utiliser pour résoudre cette erreur?

Merci

10
Manuelle

Je sais que ces questions sont assez anciennes, mais j'ai couru dans le même problème lorsque vous travaillez avec une vieilletoux Hermes Caugh API.

Je n'ai également pas voulu définir Seclevel vers 1 pour l'ensemble du système. Ce que vous cherchez est ce qui suit:

 curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'DEFAULT@SECLEVEL=1');

il suffit de mettre cette pièce de code dans votre application et que vous devriez aller pour cette demande. Bien sûr, ce n'est pas le moyen le plus sûr, mais lorsque l'API ne vous configure pas correctement, vous n'avez pas de choix.

5
Alexis Peters

Après une mise à niveau sur Ubuntu 20, j'ai le même problème.

La solution consistait à passer à OpenSSL-1.1.1 g. Par défaut Ubuntu 20 Utilisez OpenSSL-1.1.1 F Cela ne fonctionne pas bien.

Lien vers une solution d'installation Pour cette version encore déballée de OpenSSL.

2
Galigator