Я собрал сайт, использующий платежную систему Stripe.
После внесения пробного платежа через HTTPS я получаю сообщение об ошибке:
Stripe больше не поддерживает запросы API, сделанные с TLS 1.0. Пожалуйста, инициируйте HTTPS-соединения с TLS 1.2 или новее.
Я убедился, что все мои версии программного обеспечения обновлены:
Версия PHP: 7.0.7
Версия cUrl: 7.47.1
Версия SSL: OpenSSL / 1.0.2h
Я также проверил сам мой сайт на https://www.ssllabs.com/ssltest/analyze.html чтобы убедиться, что TLS 1.2 включен и функционирует на сервере.
Единственное, о чем я могу подумать, так это о том, что, возможно, существует проблема с пакетом сертификатов, который я зарегистрировал в php.ini (настройка CURL curl.cainfo), но, поскольку в исходном коде Stripe уже включен файл ca-certificate.crt, я не смог Я уверен, что мне даже нужно было установить запись для curl.cainfo в моем файле php.ini.
Любой совет будет высоко ценится. Если я могу предоставить дополнительную информацию, которая может помочь, просто дайте мне знать.
РЕДАКТИРОВАТЬ: В настоящее время используется Stripe PHP Framework v4.1.1 (последняя версия)
Упомянутый вами сертификат SSL используется вашим сервером для ответа на входящие запросы. Это означает, что если я захожу на ваш веб-сайт в качестве клиента, мой браузер (Chrome) по умолчанию попытается подключиться к вашему серверу по протоколу TLS 1.2, так как сначала он использует наиболее безопасный протокол. Ваш сервер, очевидно, может отвечать на запросы по TLS 1.2.
Проблема, с которой мы сталкиваемся сейчас, заключается в том, что когда ваш сервер связывается с серверами Stripe, он согласовывает TLS 1.0 по умолчанию вместо TLS 1.2. Поскольку Stripe собирается отклонять запросы, сделанные с помощью TLS < 1.2 это означает, что ваши запросы начнут терпеть неудачу в следующем году, если вы не обновитесь.
Здесь я бы порекомендовал поговорить с вашим веб-хостом об этом, чтобы они могли помочь вам разобраться в ваших настройках и убедиться, что вы поддерживаете запросы TLS 1.2 с вашего сервера на Stripe. Кроме того, вы можете следовать инструкциям на https://support.stripe.com/questions/how-do-i-upgrade-my-stripe-integration-from-tls-1-0-to-tls-1-2 чтобы убедиться, что ваши библиотеки кода также поддерживают TLS 1.2.
Это также может быть вызвано устаревшей версией библиотеки PHP Stripe. В пятницу 29 июля они выпустили версию 3.19.0, в которой исправлена ошибка, которая затрагивала некоторые настройки, которые могли объяснить, почему вы получаете эту ошибку, даже если ваш хост поддерживает TLS 1.2. Вы также можете попробовать обновить используемую вами библиотеку Stripe PHP до текущей версии, чтобы проверить, решит ли она вашу проблему.
Проблема была с моим местным сертификатом эмитента, оказывается, я был на правильном пути.
Пришлось установить значение по умолчанию в моем файле php.ini для curl_cainfo, и это исправило это.