Intereting Posts
Разбор массива JSON с PHP foreach PHP PDO избегает вопросительного знака, поэтому он не считает, что это заполнитель Можно ли полагаться на setlocale и полагаться на установленные локали? ob_start () и ob_flush () не работают Поиск ключа в многомерном массиве, а затем изменение значения с помощью PHP Imagick (Imagemagick on PHP): сначала загрузите файл без сохранения на диск? Класс «ГузлHttp \ Клиент» не найден Как использовать preg_replace, чтобы добавить один час к значению времени? Как подключить два или несколько файлов и отправить почту в PHP PHP Переключение между двумя переменными одинаково без использования базы данных PHP setcookie () не работает Как я могу интерполировать существующий литерал строки php внутри json-файла? Вызов функции-функции-члена () на null перед формой отправить функцию вызова javascript Как заставить браузер показывать последние изменения в файле CSS?

Обновление запроса PHP cURL с SSLv3 на TLS ..?

Из-за недавней уязвимости, обнаруженной в SSLv3 , многие поставщики веб-сервисов (например, PayPal, Facebook, Google) отключают это и хотят, чтобы мы использовали TLS вместо этого. У меня есть немного проблемы с выяснением, как это сделать.

В настоящее время я использую следующую функцию для обработки моих запросов cURL.

function CURLRequest($Request = "", $APIName = "", $APIOperation = "", $PrintHeaders = false) { $curl = curl_init(); curl_setopt($curl, CURLOPT_VERBOSE, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_TIMEOUT, 30); curl_setopt($curl, CURLOPT_URL, $this->EndPointURL); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $Request); if($this->APIMode == 'Certificate') { curl_setopt($curl, CURLOPT_SSLCERT, $this->PathToCertKeyPEM); } $Response = curl_exec($curl); /* * If a cURL error occurs, output it for review. */ if($this->Sandbox) { if(curl_error($curl)) { echo curl_error($curl).'<br /><br />'; } } curl_close($curl); return $Response; } 

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

Информация, которую я обнаружил, заключается в том, что мне просто нужно изменить это, чтобы использовать TLS вместо SSL, а другие ответы, которые я видел, просто делают это, добавляя параметр curl для моей функции …

 curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1); 

Однако я добавил эту опцию, и я все равно получаю тот же результат. Любая информация о том, как я могу получить эту работу, будет очень благодарна. Благодаря!

Скопировано из: Ошибка SSL не может измениться на TLS

Попробуйте добавить curl_setopt($curl, CURLOPT_SSL_CIPHER_LIST, 'TLSv1'); к вашему коду.

Это будет работать, если вы используете cURL на основе OpenSSL libssl, но не на основе nss .

Лучшее решение до тех пор, пока Paypal не обновит свой основной SDK, было бы переопределить CURLOPT_SSL_CIPHER_LIST непосредственно в вашем приложении. Таким образом, вам не нужно напрямую вмешиваться в пакет sdk-core-php, и вы сможете бесплатно обновить его в будущем.

Вы можете добавить что-то вроде следующего в логику загрузки или обработки платежей приложения:

 PPHttpConfig::$DEFAULT_CURL_OPTS[CURLOPT_SSL_CIPHER_LIST] = 'TLSv1'; 

Просто убедитесь, что вы подробно прокомментируете его и не забывайте вынимать его позже, когда проблема была исправлена ​​в ядре.

Я только что решил обновить библиотеку nss через терминал.

Если вышеуказанное не помогает, проверьте версию OPENSSL. Вероятно, из-за версии OPENSSL <= 0.9.8. Обновление для PHP7 помогает, что связано с более высокой версией OPENSSL.