Сертификат 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, он использует?

Спасибо!

Author: Megan Speir, 2015-03-19

9 answers

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

Выполните следующие действия:

Загрузите следующий файл - 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). Тогда он будет работать безупречно.

Спасибо.

 49
Author: codemonkey, 2016-08-04 16:16:25

Редактировать TinyHttp.php

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

 8
Author: Nuno Ferro, 2015-10-20 14:26:38

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

 3
Author: gazareth, 2015-09-02 15:13:53

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

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

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

 1
Author: leshan, 2015-04-20 16:43:52

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

Но затем я обновил свой 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
Author: Ryan, 2016-03-23 20:18:00

Вот официальный ответ от 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, пожалуйста, раскомментируйте его, удалив ";" и измените путь, чтобы указать его на файл cacert.pem, прикрепленный к этому электронному письму, например:

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

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

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

 0
Author: Jonathan, 2016-04-25 13:21:47

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

    $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();
    }
 0
Author: user3511370, 2017-01-08 18:49:53

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

Php.ini

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

Cacert.pem загружается здесь: https://twilio.zendesk.com/attachments/token/EenviU5Rv4KHUzGM6VP5UijB0/?name=cacert.pem

 0
Author: Jonathan, 2018-09-29 02:33:28

У меня такая же проблема, но я изучал статью, может быть, это поможет вам. http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

Загляните в свою версию cURL. вы должны быть в 7.4x

 -1
Author: coco minion, 2015-03-22 05:37:49