IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Petr Šťastný
Tvůrce
Avatar
Petr Šťastný:6.8.2018 23:51

Zdravím, mám problém s CURL. Poté, co spustím na jedné určité stránce, vyhodí handshake error. Zkoušel jsem stránku načíst pomocí pythonu a lynxu, ale to také nešlo.

Dostal jsem PHP skript, který ten request zvládne. Dokázal by ho někdo přeložit do curl nebo mi alespoň poradit, jak tu chybu v curl vyřešit?

Část PHP skriptu vypadá takhle:

$input_xml = '..data...';

            $url = "...url...";

        //setting the curl parameters.
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSLCERT, 'certifikat.pem');
        curl_setopt($ch, CURLOPT_SSLKEY, 'certifikat.key.pem');
        curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml);
        $data = curl_exec($ch);

Zkoušel jsem na internetu různé curl generátory, napsat vlastní příkaz, nic nešlo. Curl příkaz, který jsem zkusil naposled, vypadá takhle:

curl -d "...data..." --cacert certifikat.pem --key certifikat.key.pem url

Output s přepínačem -v:

*   Trying --------------...
* TCP_NODELAY set
* Connected to ---------------- (----------------) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: -----------.pem
  CApath: /etc/ssl/certs
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.0 (IN), TLS handshake, Server hello (2):
* TLSv1.0 (IN), TLS handshake, Certificate (11):
* TLSv1.0 (IN), TLS handshake, Server key exchange (12):
* TLSv1.0 (IN), TLS handshake, Server finished (14):
* TLSv1.0 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.0 (OUT), TLS change cipher, Client hello (1):
* TLSv1.0 (OUT), TLS handshake, Finished (20):
* TLSv1.0 (IN), TLS change cipher, Client hello (1):
* TLSv1.0 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.0 / ECDHE-RSA-AES256-SHA
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: -----------------------------------------------------------
*  start date: Feb 19 00:00:00 2018 GMT
*  expire date: Jan 25 12:00:00 2021 GMT
*  subjectAltName: host "-----------------------" matched cert's "*.-----------.cz"
*  issuer: -------------------------------------
*  SSL certificate verify ok.
> POST ---------------------
> Host: ---------------------------
> User-Agent: curl/7.52.1
> Accept: */*
> Content-Length: 239
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 239 out of 239 bytes
* TLSv1.0 (IN), TLS handshake, Hello request (0):
* TLSv1.0 (OUT), TLS handshake, Client hello (1):
* TLSv1.0 (IN), TLS handshake, Server hello (2):
* TLSv1.0 (IN), TLS handshake, Certificate (11):
* TLSv1.0 (IN), TLS handshake, Server key exchange (12):
* TLSv1.0 (IN), TLS handshake, Request CERT (13):
* TLSv1.0 (IN), TLS handshake, Server finished (14):
* TLSv1.0 (OUT), TLS handshake, Certificate (11):
* TLSv1.0 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.0 (OUT), TLS change cipher, Client hello (1):
* TLSv1.0 (OUT), TLS handshake, Finished (20):
* TLSv1.0 (IN), TLS alert, Server hello (2):
* SSL read: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure, errno 0
* Curl_http_done: called premature == 1
* stopped the pause stream!
* Closing connection 0
curl: (56) SSL read: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure, errno 0
 
Odpovědět
6.8.2018 23:51
Avatar
Petr Šťastný
Tvůrce
Avatar
Petr Šťastný:7.8.2018 9:35

Jeste doplnim, bezi to na debianu, data jsou v xml a na jinem pocitaci handshake error neni.

Melo by to nejak fungovat s curl, ze? Php v tomhle pripade pouziva curl, jestli se nepletu.

V krajnim pripade budu volat php ktere bude volat ten dany web, ale tomu bych se radeji vyhnul.

 
Nahoru Odpovědět
7.8.2018 9:35
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.