it-swarm.com.ru

Twilio PHP - SSL-сертификат: самоподписанный сертификат в цепочке сертификатов

Я борюсь с этой ошибкой при попытке отправить сообщение через Twilio, используя их PHP библиотеку :

Fatal error: Uncaught exception Services_Twilio_TinyHttpException with message SSL certificate problem: self signed certificate in certificate chain thrown in F:\path\to\site\twilio-php\Services\Twilio\TinyHttp.php on line 119

Я использую Wamp на Windows 7.

Я конечно нашел все другие сообщения об ошибках сертификата. Из того, что я вижу, обычно обновление или добавление файла cacert.pem решает проблему. Тем не менее, даже после этого я все еще получаю ту же ошибку.

Так же, как проверка здравомыслия, это именно то, что я сделал:

  1. Загрузил последние сертификаты отсюда: http://curl.haxx.se/ca/cacert.pem .
  2. Поместил этот файл в следующую папку c:/wamp/certs/cacert.pem
  3. Обновлен php.ini следующим образом: curl.cainfo = c:/wamp/certs/cacert.pem
  4. Перезапустил все службы Wamp, включая Apache

И я все еще получаю ту же ошибку. Я подтвердил, что я редактирую правильный php.ini, используя phpinfo(). Я в недоумении, почему он все еще жалуется.

Можно ли на 100% проверить, что мой файл cacert.pem найден и прочитан? Я проверил phpinfo(), и там нет упоминаний об этом. Должен ли он где-то сказать, какой, если он используется, cacert.pem?

Спасибо!

20
jd182

У меня была точно такая же проблема

Следуй этим шагам:

Загрузите следующий файл - cacert.pem

Затем загрузите следующий файл - thawte_Premium_Server_CA.pem

Откройте второй файл в текстовом редакторе и скопируйте его содержимое в первый файл (cacert.pem внизу/в конце).

Сохраните cacert.pem и добавьте следующие строки в свой php.ini:

[curl]
curl.cainfo=c:/xampp/php/cacert.pem

Очевидно, измените каталог на тот, где находится ваш pem. Перезапустите локальный сервер php (xampp/wamp). Тогда это будет работать без нареканий.

благодарю.

50
codemonkey

Изменить TinyHttp.php

и добавьте CURLOPT_SSL_VERIFYPEER => FALSE, в массив $ opts

8
Nuno Ferro

Я не использую Twilio, но у меня Windows, и у меня были точные проблемы, описанные в OP. Я решил эту проблему, загрузив файл ca-bundle.crt с этой страницы и указав на него свой php.ini: http://curl.haxx.se/docs/caextract.html

3
gazareth

В моем случае cacert.pem из ссылки на скачивание выше не работал для меня, но cacert.pem из предыдущего пакета библиотеки twilio php, такого как 3.12.5 работал. Я изменил twilio.php в новом пакете, чтобы добавить следующие две строки

CURLOPT_CAINFO => dirname(FILE) . '/cacert.pem'
'cafile' => dirname(FILE) . '/cacert.pem'

в соответствующее местоположение как более старый пакет и скопировал cacert.pem в более новый пакет.

1
leshan

Вместо того чтобы взламывать tiny_http.php, вы можете добавить свои собственные параметры cURL, вызвав конструктор Twilio CurlClient с выбранными параметрами, например:

    $client = new \Twilio\Rest\Client($accountSid, $authToken);
    $curlOptions = [ CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSL_VERIFYPEER => false];
    $client->setHttpClient(new CurlClient($curlOptions));

    try {
        $call = $client->calls->create($from_phone, $phone_number, $callback_url);
        print 'Call queued with Twilio';
    } catch (\Exception $ex) {
        print 'Twilio error: ' . $ex->getMessage();
    }
1
user3511370

Вот официальный ответ от Twilio:

Чтобы решить эту проблему, попробуйте сделать следующее:

1 Загрузите следующий файл pem: https://twilio.zendesk.com/attachments/token/EenviU5Rv4KHUzGM6VP5UijB0/?name=cacert.pem

2 Скопируйте этот файл в c:\cert\cacert.pem (Windows) или любой другой путь в вашей установке Unix/Linux/Mac

3 Откройте файл php.ini в вашем любимом редакторе

Если в вашем php.ini существует следующая конфигурация string: curl.cainfo, раскомментируйте ее, удалив «;» и измените путь, чтобы он указывал на файл cacert.pem, прикрепленный к этому электронному письму, например:

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

curl.cainfo=c:\cert\cacert.pem

5 Пожалуйста, перезапустите службу Apache, чтобы применить изменения (очень важно!)

0
Jonathan

Для меня ни один из ответов, размещенных здесь, не работал. 

Но затем я обновил свой PHP до 7.0.1 *, и у меня больше не было этой ошибки: Services_Twilio_TinyHttpException: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL.

* (C:\wamp\bin\php\php-7.0.1-Win32-VC14-x64 вместо C:\wamp\bin\php\php5.4.3)

И мой C:\wamp\bin\php\php-7.0.1-Win32-VC14-x64\php.ini уже включил curl.cainfo=C:/wamp/cacert.pem.

0
Ryan

Добавление этого ответа, потому что никто не упоминает [ini-tag]

php.ini

[curl]
curl.cainfo=C:\cacert.pem

cacert.pem можно скачать здесь: https://twilio.zendesk.com/attachments/token/EenviU5Rv4KHUzGM6VP5UijB0/?name=cacert.pem

0
Jonathan