Я использую cURL для проверки транзакций PayPal в плагине WordPress. Недавно я начал получать отчеты об ошибках о том, что пользователь не может завершить процесс покупки, потому что транзакция не может быть проверена. Я обнаружил ошибку:
SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Я нашел много вопросов здесь, в StackOverflow, связанных с одной и той же проблемой, большинство из них сказали, что решение заключается в предоставлении пакета CA с использованием опции CURLOPT_CAINFO
cURL. Я загрузил и в настоящее время поставляю с плагином самую последнюю версию (конвертированную 28 июня 2012 г.) из http://curl.haxx.se/ca/cacert.pem. Это решило большинство вопросов, которые я получил.
Проблема в том, что я только что получил еще один отчет о неудачных платежах, и ошибка была такой же: SSL certificate problem, verify that the CA cert is OK.
, Интересная часть заключается в том, что теперь решение было удалить параметр CURLOPT_CAINFO
. Мне интересно, есть ли в этом объяснения. Я думал, что использование обновленного пакета СА, такого как тот, который я загрузил, является общим решением, но похоже, что это иначе.
Каким будет общее решение для такого рода проблем? и что может объяснить, что использование обновленного пакета CA вызывает проблемы с сертификатом SSL, а не их исправление?.
Это конфигурация cURL:
<?php
$ch = curl_init("https://www.paypal.com/cgi-bin/webscr");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, '/path/to/cacert.pem');
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
?>
ОБНОВЛЕНИЕ: сертификат на www.paypal.com подписан VeriSign. Иерархия сертификатов (как показано в Firefox):
- VeriSign Class 3 Public Primary Certification Authority - G5
- VeriSign Class 3 Extended Validation SSL CA
- www.paypal.com
Я могу подтвердить сертификат для VeriSign Class 3 Public Primary Certification Authority - G5 включен в версию, которую я использую http://curl.haxx.se/ca/cacert.pem.
Спасибо за вашу помощь.