2014-10-03 15 views
5

Ho una difficoltà estrema con il curl PHP. Sto tentando di aprire un sito: https://www.novaprostaffing.com/np/index.jsp tramite PHP curl, ma di continuo ottenendo il seguente errore: "Errore di protocollo SSL sconosciuto in relazione al www.novaprostaffing.com"Errore di arricciatura PHP: "Errore del protocollo SSL sconosciuto in relazione a ..."

La mia funzione è la seguente:

function getUrl($url) { 
$ch = curl_init(); 


curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); 


curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 

curl_setopt($ch, CURLOPT_URL, $url); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 

$buffer = curl_exec($ch); 

if (!$buffer) 
    { 
    echo "cURL error number:" .curl_errno($ch); 
    echo " and url is $url and cURL error:" . curl_error($ch); 

    } 
curl_close($ch); 
return $buffer; 

}

ho tentato più correzioni, tra cui:

  1. Forzare ricciolo alla versione 3
  2. Impostazione CURLOPT_SSL_VERIFYPEER & CURLOPT_SSL_VERIFYHOST a 0
  3. Controllare per vedere se era su arricciare 7.34. Mi è stato detto che c'era un baco in questa versione, ma sono arricciato 7.19.1

Nessuno dei precedenti ha funzionato. Se hai qualche idea su come risolvere questo problema, sarebbe molto apprezzato!

+2

Provalo con 'curl_setopt ($ ch, CURLOPT_SSLVERSION, 1);' Questo imposta la versione su TLSv1 (non SSLv1) – Emilie

+0

Grazie, ha funzionato, molto apprezzato! –

risposta

0

Il server parla solo TLS 1.0 e tentando di connettersi con SSL 2.0 o SSL 3.0 causerà l'errore che vedi. Ciò significa che impostare la versione su 3 è esattamente la cosa sbagliata con questo server. A parte questo, la catena di certificati è incompleta. Il server fornisce solo il certificato foglia, non i certificati intermedi fino alla radice attendibile. Ciò causerà il fallimento della verifica.

2

Provare a impostare l'opzione cURL CURLOPT_SSLVERSION. Ho avuto lo stesso problema qualche tempo fa, questo ha fatto il trucco per me :)

curl_setopt($ch, CURLOPT_SSLVERSION, 3); // 1, 2 or 3 
0

Hai provato qualche altro URL HTTPS e vedere se ha funzionato? Qui ci sono 3 cause comuni

  1. Destinazione del sito non piace il protocollo
  2. La destinazione del sito non piace il Cipher
  3. La Chiave privata SSL è scaduto
Problemi correlati