it-swarm.com.ru

Ошибка: ошибка: 14077410: подпрограммы SSL: SSL23_GET_SERVER_HELLO: сбой квитирования оповещения 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);

этот код работает на локальном хосте, но когда я тестирую на своем работающем сервере, он выдаст мне эту ошибку Ошибка: ошибка: 14077410: процедуры SSL: SSL23_GET_SERVER_HELLO: ошибка квитирования оповещения sslv3, затем я попытался это 

<?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 это снова будет работать на локальном хосте, а в прямом эфире это дает мне это 

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

мой сервер имеет эти сертификаты

Ключ сервера и сертификат № 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

проверенные требования на

3
Raza Saleem

Ваш сервер может поддерживать TLS 1.2, но вы должны убедиться, что HTTP-запросы действительно его используют. Судя по полученному вами результату, вы, очевидно, не используете TLS 1.2 с запросами.

Попробуйте добавить это к вашим опциям cURL:

curl_setopt($ch, CURLOPT_SSLVERSION, 6);

Это заставит TLS 1.2.

Или обновите стек программного обеспечения вашего сервера, и это произойдет автоматически. Смотрите этот пост для более подробной информации, самое главное эта часть:

Если вы хотите использовать TLS 1.2, вам нужно будет как минимум перейти на OpenSSL 1.0.1, а затем установить CURLOPT_SSLVERSION на 6 (TLS 1.2).

Если вы хотите, чтобы TLS 1.2 использовался автоматически во время запросов SSL, вам также необходимо обновить его до PHP 5.5.19+ (это идеальное решение, но многие проекты все еще используют более старые версии PHP). ,.

1
Drew Angell

TL; TR: ваше программное обеспечение устарело для поддержки этих серверов.

Оба сервера поддерживают только TLS 1.2, что можно увидеть при проверке с помощью SSLLabs . Ваша версия OpenSSL - 1.0.0s, которая еще не поддерживает TLS 1.2. Поддержка доступна только с 1.0.1. 

мой сервер имеет эти сертификаты ...

Настройка вашего веб-сервера (то есть сертификаты, версии TLS ...) не имеет значения, потому что в этом случае вы являетесь клиентом, подключающимся к другому серверу.

1
Steffen Ullrich

У нас была такая же проблема с API-интерфейсом stamps.com, и в нашем случае на момент написания этой статьи было решено установить CURLOPT_SSLVERSION в 5.

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