2016-08-05 69 views
2
$ch = curl_init(); 
$clientId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 
$secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 

curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.paypal.com/v1/oauth2/token"); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERPWD, $clientId.":".$secret); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials"); 
$result = curl_exec($ch); 
if (curl_errno($ch)) { 
    echo 'Error:' . curl_error($ch); 
} 
curl_close ($ch); 

dieser Code auf localhost funktioniert, aber wenn ich auf meinem Live-Server am Testen wird es mir diesen Fehler Fehler geben: Fehler: 14077410: SSL-Routinen : SSL23_GET_SERVER_HELLO: SSLv3 Alarm Handshake-Fehler dann habe ich versucht, dieseFehler: Fehler: 14077410: SSL-Routinen: SSL23_GET_SERVER_HELLO: SSLv3 Alarm Handshake-Fehler

<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://tlstest.paypal.com/"); 
curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem'); 
var_dump(curl_exec($ch)); 
if ($err = curl_error($ch)) { 
var_dump($err); 
echo "DEBUG INFORMATION:\n###########"; 
echo "CURL VERSION"; 
echo json_encode(curl_version(), JSON_PRETTY_PRINT); 
}?> 

github.com/paypal/TLS-update/tree/master/php diese wieder auf localhost und auf Live-Arbeit wird es mir dieses

gibt
error bool(false) 
string(67) "Unknown SSL protocol error in connection to tlstest.paypal.com:443 " 
DEBUG INFORMATION: 
###########CURL VERSION 

meinem Server haben diese Zertifikate

Server Schlüssel und Zertifikat # 1

Subject *.secure.xxxxxxxx.com 


Fingerprint SHA1: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx 


Pin SHA256: S4/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 


Common names *.secure.xxxxxxxx.com MISMATCH 


Alternative names *.secure.xxxxxxx.com 



Key RSA 2048 bits (e 65537) 


Weak key (Debian) No 


Issuer Symantec Class 3 Secure Server CA - G4 


AIA: xxxxxxx/ss.crt 


Signature algorithm SHA256withRSA 


Extended Validation No 


Certificate Transparency Yes (certificate) 


OCSP Must Staple No 


Revocation information CRL, OCSP 


CRL: xxxxxx/ss.crl 


OCSP: xxxxxxxxx 


Revocation status Good (not revoked) 

Trusted No NOT TRUSTED (Why?) 

# 2

Subject Symantec Class 3 Secure Server CA - G4 


Fingerprint SHA1: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 


Pin SHA256: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 


Key RSA 2048 bits (e 65537) 


Issuer VeriSign Class 3 Public Primary Certification Authority - G5 


Signature algorithm SHA256withRSA 

# 3

Subject VeriSign Class 3 Public Primary Certification Authority - G5 


Fingerprint SHA1: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 


Pin SHA256: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 

Key RSA 2048 bits (e 65537) 


Issuer VeriSign, Inc./Class 3 Public Primary Certification Authority 

Signature algorithm SHA1withRSA WEAK 

**Protocols** 


TLS 1.2 Yes 


TLS 1.1 Yes 


TLS 1.0 Yes 


SSL 3 No 


SSL 2 No 

enter image description here

Anforderungen geprüft at

+0

Es könnte wegen einer alten curl/openssl Version sein. Bitte füge die relevante Versionsinformation zu deiner Frage hinzu. Siehe http://php.net/manual/en/function.curl-version.php. –

+0

@SteffenUllrich curl details http://i.stack.imgur.com/5tPfC.png und dies ist die Antwort von function.curl-version.php ** CURL_VERSION_IPV6 stimmt nicht überein CURL_VERSION_KERBEROS4 stimmt nicht mit CURL_VERSION_SSL überein CURL_VERSION_LIBZ stimmt mit ** –

+0

überein Wenn Sie wirklich Hilfe benötigen, machen Sie es anderen einfach, Ihnen zu helfen: dhVerwende korrekte Formatierung und verstecke keine relevanten Informationen (wie Softwareversionen) in einem Bild in einem Kommentar. Denken Sie daran: niemand wird Ihnen helfen müssen. Verwenden Sie einfach cut + paste, um die Informationen als Text in Ihre ursprüngliche Frage einzugeben. –

Antwort

0

Ihr Server unterstützen kann TLS 1.2, aber Sie müssen die HTTP-Anfragen stellen Sie sicher, verwenden es tatsächlich. Aufgrund Ihres Ergebnisses, das Sie erhalten, verwenden Sie TLS 1.2 anscheinend nicht mit den Anfragen.

versuchen, dies zu Ihren cURL Optionen hinzu:

curl_setopt($ch, CURLOPT_SSLVERSION, 6); 

Die 1.2 TLS zwingen wird.

Alternativ können Sie den Server-Software-Stack aktualisieren, und dies geschieht automatisch. Siehe this post für mehr Details, was am wichtigsten ist dieser Teil:

If you want to use TLS 1.2 you’ll need to upgrade to OpenSSL 1.0.1 as a minimum, and then you’ll be able to set CURLOPT_SSLVERSION to 6 (TLS 1.2).

If you want TLS 1.2 to be used automatically during SSL requests, you’ll also need to upgrade to PHP 5.5.19+ (this is the ideal solution but many projects are still on older PHP versions).

+0

Ich habe schon versucht, diese aber nicht –

+0

Nun, den Fehler gearbeitet, die Sie hochgeladen haben, sagen ausdrücklich, dass der Antrag mit SSLv3 gemacht wurde, so dass die Informationen, die Sie über Ihren Server haben muss nicht richtig sein. Dies ist ein sehr häufiges Problem. Siehe [diesen Beitrag] (https://www.angelleye.com/paypal-ssl-error-poodle-vulnerability/) für weitere Details. –

+0

@AndrewAngell: openssl spuckt „SSLv3 Alarm Handshake-Fehler“ und ähnliche Fehler auf vielen Orten, auch wenn kein SSL 3.0 beteiligt ist, weil es gerade geschieht, in dem Code, der SSL verwaltet 3. + (dh SSL 3.0, TLS 1.0 ...) Mitteilungen. Dies ist sehr irritierend, da es in den echten Nachrichten oft überhaupt kein sslv3 gibt. –

0

TL, TR: Ihre Software zu alt ist, um diese Server zu unterstützen.

Beide Server unterstützen nur TLS 1.2, wie bei der Überprüfung mit SSLLabs zu sehen ist. Ihre OpenSSL-Version ist 1.0.0s, die TLS 1.2 noch nicht unterstützt. Support ist erst seit 1.0.1 verfügbar.

my server have these certificates ...

Der Aufbau Ihres Webservers (d Zertifikate, TLS-Versionen ...) sind nicht relevant, da in diesem Fall der Client eine Verbindung zu einem anderen Server.