it-swarm.com.de

Fehler: Fehler: 14077410: SSL-Routinen: SSL23_GET_SERVER_HELLO: Fehler beim Handshake für den Alarm sslv3

$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 funktioniert auf localhost, aber wenn ich auf meinem Live-Server teste, wird mir dieser Fehler angezeigt Error: error: 14077410: SSL-Routinen: SSL23_GET_SERVER_HELLO: sslv3-Warnung 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 das wird wieder auf localhost funktionieren und bei live gibt es mir das 

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

mein Server hat 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

geprüfte Anforderungen bei

3
Raza Saleem

Ihr Server unterstützt möglicherweise TLS 1.2, Sie müssen jedoch sicherstellen, dass die HTTP-Anforderungen diese tatsächlich verwenden. Aufgrund Ihres Ergebnisses verwenden Sie TLS 1.2 anscheinend nicht für die Anforderungen.

Versuchen Sie, dies zu Ihren cURL-Optionen hinzuzufügen:

curl_setopt($ch, CURLOPT_SSLVERSION, 6);

Das wird TLS 1.2 erzwingen.

Alternativ können Sie Ihren Server-Software-Stack aktualisieren. Dies geschieht automatisch. Siehe dieser Beitrag für weitere Details, am wichtigsten dieser Teil:

Wenn Sie TLS 1.2 verwenden möchten, müssen Sie mindestens ein Upgrade auf OpenSSL 1.0.1 durchführen. Anschließend können Sie CURLOPT_SSLVERSION auf 6 (TLS 1.2) setzen.

Wenn TLS 1.2 bei SSL-Anfragen automatisch verwendet werden soll, müssen Sie auch ein Upgrade auf PHP 5.5.19+ durchführen (dies ist die ideale Lösung, aber viele Projekte befinden sich noch in älteren PHP Versionen). .

1
Drew Angell

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

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

mein Server hat diese Zertifikate ...

Das Setup Ihres Webservers (d. H. Zertifikate, TLS-Versionen ...) ist nicht relevant, da Sie in diesem Fall der Client sind, der eine Verbindung zu einem anderen Server herstellt.

1
Steffen Ullrich

Hatte dasselbe Problem mit der stamps.com-API und in unserem Fall zum Zeitpunkt dieses Beitrags bestand die Lösung darin, CURLOPT_SSLVERSION auf 5 zu setzen.

curl_setopt($ch, CURLOPT_SSLVERSION, 5);
0
Martin