2016-01-27 25 views
6

Sto provando a testare un nuovo endpoint del test PayPal: https://tlstest.paypal.com.URL test TLS PayPal - Errore protocollo PHP curl SSL

Vedere in fondo a questa pagina: TLS 1.2 and HTTP/1.1 Upgrade Microsite (verificare il ...).

Sto utilizzando PHP (5.3.28) e ricciolo (7.30.0 - OpenSSL/0.9.8y - libssh2/1.4.2) su Windows Server 2008 R2 e IIS 7.5:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://tlstest.paypal.com'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FAILONERROR, true); 
curl_setopt($ch, CURLOPT_SSLVERSION, 6); // CURL_SSLVERSION_TLSv1_2 
$result = curl_exec($ch); 
echo 'result = '.$result.'<br>'; 
echo 'errno = '.curl_errno($ch).'<br>'; 
echo 'error = '.curl_error($ch).'<br>'; 
curl_close($ch); 

I 'm questo errore:

35 Unknown SSL protocol error in connection to tlstest.paypal.com:443

ho trovato questo: Github - Unknown SSL protocol error in cui qualcuno dice:

Openssl must be at 1.0.1 or higher for TLS 1.2.

è corretto ..?

Il mio PHP OpenSSL è in versione: OpenSSL/0.9.8y (da phpinfo()).

Se avete bisogno di OpenSSL 1.0.1 o superiore per utilizzare TLS 1.2 quindi presumibilmente ogni server che esegue PHP con un minore OpenSSL versione (Sto indovinando che è un sacco!) Non sarà in grado di utilizzare qualsiasi PayPal API o presto l'IPN di PayPal.

Come aggiornare la versione di PHP OpenSSL su Windows ..?

risposta

1

Ho questo lavoro ora. Sembra che almeno OpenSSL/1.0.1i sia richiesto per TLS 1.2.

Ho aggiornato la versione di PHP a 5.6.0, che ha aggiornato OpenSSL alla versione 1.0.1.

Ho anche bisogno di questi:

  1. Usa curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); per verificare il certificato. L'impostazione predefinita è true a partire da cURL 7.10.
  2. Salva cacert.pem da http://curl.haxx.se/docs/caextract.html localmente (nel mio caso c: \ cert), quindi aggiornare l'ini di PHP che si sta utilizzando per fare riferimento cacert.pemas shown here. Usando il file ini si risparmia di dover usare curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '\cacert.pem'); in ogni chiamata.
+0

Dopo l'aggiornamento a PHP 5.6, l'handshake SSL è stato completato correttamente senza specificare una versione SSL da solo? E hai aggiornato la tua versione arricciata, o è ancora 7.30? –

+0

Ho lasciato la versione SSL in, quindi non sono sicuro se funziona senza di essa, potrei provarlo presto ... cURL verson ora è 7.36.0, che sembra venire con PHP 5.6.0. –

Problemi correlati