Сертификат 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:pathtositetwilio-phpServicesTwilioTinyHttp.php on line 119
я использую wamp в windows 7.
Я конечно нашел все другие сообщения об ошибках сертификатов. Из того, что я вижу, обычно обновление или добавление cacert.pem
файл устраняет проблему. Однако даже после этого я все равно получаю ту же ошибку.
так же, как проверка здравомыслия вот именно то, что у меня есть сделано:
- скачал последние сертификаты отсюда:http://curl.haxx.se/ca/cacert.pem.
- разместил этот файл в следующем месте
c:/wamp/certs/cacert.pem
- обновлен php.ini следующим образом:
curl.cainfo = c:/wamp/certs/cacert.pem
- перезапустил все службы wamp, включая apache
и я все еще получаю ту же ошибку. Я проверил, что редактирую правильный php.ini с помощью phpinfo()
. Я в недоумении, почему это все еще жалующийся.
есть ли способ проверить 100%, что мой cacert.pem
файл найден и прочитан? Я проверил phpinfo()
и там нет никакого упоминания об этом. Должен ли он где-то сказать, что, если есть cacert.pem
Это используете?
спасибо!
9 ответов
у меня была точно такая же проблема
выполните следующие действия:
загрузите следующий файл -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). Тогда он будет работать безупречно.
спасибо.
Я не использую Twilio, но я на Windows и имел точные проблемы, описанные в OP. Я решил это, загрузив ca-bundle.crt
файл с этой страницы и указание моего php.ini в нем:
http://curl.haxx.se/docs/caextract.html
в моем случае, cacert.pem из ссылки для скачивания выше не работал для меня, но cacert.pem из предыдущего пакета библиотеки PHP twilio, такого как 3.12.5 работали. Я изменил twilio.php в более новом пакете, чтобы добавить следующие две строки
CURLOPT_CAINFO => dirname(FILE) . '/cacert.pem'
'cafile' => dirname(FILE) . '/cacert.pem'
в соответствующее место, как старый пакет и скопировал cacert.pem к более новому пакету также.
для меня, ни один из ответов, размещенных здесь работал.
но затем я обновил свой 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
.
вот официальный ответ от 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-файл в вашем любимом редакторе
при следующих конфигурация string: curl.cainfo
существует в вашем php.ini, пожалуйста, раскомментируйте его, удалив ";
" и измените путь, чтобы указать его на cacert.файл pem, прикрепленный к этому e-mail, e.g:
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
curl.cainfo=c:\cert\cacert.pem
5 пожалуйста, перезапустите службу Apache, чтобы применить изменения (очень важно!)
вместо взлома 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();
}
добавление этого answert, потому что никто не называет [ini-tag]
php.ini
[curl]
curl.cainfo=C:\cacert.pem
cacert.pem загружается здесь: https://twilio.zendesk.com/attachments/token/EenviU5Rv4KHUzGM6VP5UijB0/?name=cacert.pem
У меня такая же проблема, но я просматривал статью, возможно, это поможет вам. http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/
посмотрите на свою версию cURL. вы должны быть в 7,4 х