Мы используем сайт 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
, но я все еще получаю ту же ошибку о том, как он не может получить сертификат локального эмитента.
Спасибо за любую помощь!
Проблема в том, что корневой CA для 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?
Других решений пока нет …