Как передать опции curl через OmniPay в Guzzle?

Сейчас в процессе интеграции OmniPay. Вроде все хорошо, но когда я использую шлюз PayPalExpress, выдает следующую ошибку:

[curl] 35: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure [url] https://api-3t.sandbox.paypal.com/nvp?VERSION=119.0&USER=...

Отслеживание вещей кажется проблемой с обновлениями SSL PayPal, и мне нужно сказать ему использовать SSL3 и обновленный список шифров:

curl_setopt($ch, CURLOPT_SSLVERSION, 3);
curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'SSLv3');

Однако я не смог найти способ передать эти параметры в Guzzle, а затем в curl. Кто-нибудь знает, как я могу это сделать?


person Lonnie    schedule 15.02.2016    source источник


Ответы (1)


  1. Чтобы передать параметры curl или guzzle, вам нужно сделать что-то вроде этого в функции sendData: //github.com/cherrytech/omnipay-paypal/commit/f520a015a91eb1bf2666892d3ef362607a74396f
  2. То, что вы предлагаете, то есть явно установить список шифров на SSLv3, не будет работать. PayPal изменил свои серверы, чтобы требовать TLS 1.2, и любые соединения SSLv3 будут отклонены. Правильным будет обновить версию libcurl в вашей системе до > 7.40, которая автоматически согласует правильную версию TLS 1.2.
person delatbabel    schedule 16.02.2016
comment
# 1 - если я правильно понимаю, мне нужно изменить файлы ядра? Значит, в OmniPay нет возможности сделать это? # 2 - Версия curl на моем сервере 7.43.0, так что это исправление не похоже на то, что оно будет работать. - person Lonnie; 16.02.2016
comment
Я проверил это сам с помощью libcurl 7.44 на CentOS 6. У меня он отлично работает без каких-либо изменений кода с использованием шлюза PayPal_Rest. - person delatbabel; 16.02.2016
comment
Хорошо, мне может понадобиться переустановить его на моем локальном сервере, чтобы он работал правильно. И у вас есть хороший совет по поводу установки списка шифров на SSLv3. Похоже, что это должно быть CURL_SSLVERSION_TLSv1_2 (или 6), чтобы установить младшую версию. - person Lonnie; 16.02.2016
comment
Да, я считаю, что 6 - правильный ответ, однако, если у вас нет libcurl, поддерживающего это, вы просто получите исключение. Я проверил это на своем сервере с обновленной libcurl, не устанавливая версию SSL и позволяя libcurl автоматически согласовывать. Это работает нормально. Я не видел никаких доказательств того, что установка версии SSL на 6 или установка списка шифров имеет какое-либо значение, однако, если у вас есть тестовый пример, который доказывает это в любом случае, я хотел бы это увидеть. - person delatbabel; 16.02.2016