Мой скрипт PayPal неожиданно прекратил проверку SSL-сертификата

Таким образом, мой скрипт (слушатели IPN, вызовы API и т. Д.) Работал нормально, но внезапно начал выдавать ошибку о невозможности проверить сертификат SSL. Это моя ошибка (показанный PHP CURL)

Ошибка подключения SSL

Почему она перестала работать?

В прошлом году вышел PCI-DSS 3.1, и произошли серьезные изменения для всех людей, обрабатывающих кредитные карты. В частности, существует мандат на то, что вся обработка должна проводиться только по TLS 1.1 или более поздней. Первоначальная дата заката была 30 июня 2016 года, но это было отложено до 30 июня 2018 года

Совет по стандартам безопасности платежных карт (PCI SSC) расширяет дату завершения миграции до 30 июня 2018 года для перехода от SSL и TLS 1.0 к безопасной версии TLS (в настоящее время v1.1 или выше).

Теперь, пока эта отсрочка дает вам, программисту, какую-то комнату дышать по отношению к вашему переднему концу, это все равно означает, что переход на TLS 1.1+ не является дополнительным (на самом деле, я скорее буду двигаться, если бы вы были вами), и что некоторые промежуточные обработка карточек начнет двигаться быстрее, чем это. PayPal, как выясняется, является одним из тех, кто движется в отношении своих веб-сайтов

Обновление TLS 1.2

Самым безопасным протоколом для обмена информацией в Интернете сегодня является Transport Layer Security (TLS) версия 1.2. PayPal позволяет поддерживать TLS 1.2 для всех безопасных подключений, а в 2016 году начнет требовать его использования. Вам нужно будет убедиться, что ваша среда поддерживает TLS 1.2 и при необходимости внести соответствующие обновления. PayPal обновляет свои услуги, чтобы потребовать TLS v1.2 для всех HTTPS-подключений 17 июня 2016 года. После этой даты всем соединениям TLS v1.0 и TLS v1.1 API будет отказано.

Теперь, теоретически, ваш старый сценарий (при условии, что вы не сохраняете открытый ключ PayPal) должен работать нормально, но песочница (которая уже перешла на это), связи уже начинают сбой. Я обнаружил, что по ряду причин некоторые коммуникационные уровни (в частности, CURL на PHP, очень распространенный способ поговорить с PayPal) не могут более точно обсуждать с PayPal. Таким образом, вы получаете загадочную ошибку

Ошибка подключения SSL

Спасибо CURL. Это было полезно … (нет)

Итак, как мы обходим это? Ну, если мы скажем CURL использовать TLS 1.2, ваши звонки в PayPal должны снова начать работать без проблем. Если вы используете PHP и CURL, вы можете сделать это, добавив это как (где $ch – ваш обработчик CURL)

 curl_setopt($ch, CURLOPT_SSLVERSION, 6); // Force TLS 1.2 

Это изменение совершенно безопасно использовать как с песочницей, так и с живыми вызовами в PayPal.