Мы используем сайт Drupal / Ubercart, и недавно я заметил, что платежные запросы не работают.
В журналах Drupal я вижу ошибку:
Ошибка cURL: проблема с сертификатом SSL: не удалось получить сертификат локального эмитента
Я нашел ряд решений и попытался их реализовать, но без каких-либо результатов. Некоторые вещи, которые я пробовал:
/etc/php5/fpm/php.ini
для включения строки curl.cainfo = /srv/keys/cacert.pem
(который является файлом, загруженным с http://curl.haxx.se/ca/cacert .pem ). uc_authorizenet.module
для указания cainfo напрямую: curl_setopt($ch, CURLOPT_CAINFO, "/srv/keys/cacert.pem");
, Прежде чем предпринимать эти шаги, я убедился, что пакет ca-certificates
установлен и обновлен. После каждого изменения я перезапустил php5-fpm
и nginx
, но у меня по-прежнему появляется такая же ошибка о том, как он не может получить сертификат локального эмитента.
Спасибо за любую помощь!
Проблема заключается в том, что корневой ЦС для https://secure.authorize.net/gateway/transact.dll (и, возможно, другие защищенные URL-адреса на authorize.net) не включен в комплект CA http://curl.haxx.se /ca/cacert.pem , по уважительной причине: если вы заходите на страницу и смотрите подробности корневого центра сертификации в пути к сертификату, вы заметите, что отпечаток Sha1 составляет 99 a6 9b e6 1a fe 88 6b 4d 2b 82 00 7c b8 54 fc 31 7e 15 39. Поиск в Интернете приведет вас к этой странице https://blog.mozilla.org/security/2014/09/08/phasing-out-certificates-with-1024-bit-rsa-keys/ , что объясняет, что это корневому сертификату больше не доверяют. Решение предоставляется по аналогичному вопросу: Как работает authorize.net использует сертификат, подписанный с центром сертификации, который не находится в известном списке curl.haxx.se/ca/cacert.pem?