Autor Zpráva
jirivo2
Profil
Zdravím Vás, potřeboval bych poradit s jednou záludností. Přes funkci PHP curl zasílám data ve formátu json na externí URL. Po spuštění mi to hodí tuto chybu:
error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version

Zkoušel jsem skript spustit z jiného webu, kde vše fungovalo bez problému. Oba weby běží pod Forpsi, akorát s rozdílem, že jeden je na serveru s OS Windows s doinstalovaným PHP a druhý běží na Linuxu. Na obou je nainstalovaný DV SSL certifikát. Je možné, že na Windows serveru je nějaké omezení, které blokuje spuštění skriptu, nebo je spíš problém v certifikátu?

Ukázka kódu odeslání dat:

$url = 'https://api.webovastranka.cz/test/';

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/json', 'Content-Type: application/json'));

$data = <<<DATA
{
  "auth": "12345",
  "data": "data",
  "email": "email@email.cz"
}
DATA;

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

$resp = curl_exec($curl);
echo curl_error($curl);
curl_close($curl);

echo $resp;
ttttttt
Profil *
S certifikátem to nesouvisí, problém je v protokolu, kterým spolu servery komunikují. Pokud to dobře čtu, tak server odmítne TLSv1, které klient nabízí. Je zřejmě potřeba aktualizovat openssl na novější verzi a komunikovat přes TLSv1.2 nebo TLSv1.3.
N71
Profil *
Na běžnou HTTP komunikaci nemá smysl používat cURL. Použij file_get_contents() s vlastním stream_context_create().

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0