web-dev-qa-db-de.com

Twilio PHP - SSL-Zertifikat: selbstsigniertes Zertifikat in der Zertifikatkette

Ich habe Probleme mit diesem Fehler, wenn ich versuche, eine Nachricht über Twilio mit ihrer PHP -Bibliothek zu senden :

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

Ich benutze Wamp unter Windows 7.

Ich habe natürlich alle anderen Beiträge über Zertifikatfehler gefunden. Nach allem, was ich sehen kann, behebt das Aktualisieren oder Hinzufügen der cacert.pem-Datei normalerweise das Problem. Trotzdem bekomme ich immer noch den gleichen Fehler.

So wie eine Überprüfung der Vernunft hier genau das ist, was ich getan habe:

  1. Laden Sie die neuesten Zertifikate von hier herunter: http://curl.haxx.se/ca/cacert.pem .
  2. Diese Datei an folgendem Speicherort abgelegt haben c:/wamp/certs/cacert.pem
  3. Php.ini wie folgt aktualisiert: curl.cainfo = c:/wamp/certs/cacert.pem
  4. Alle Wamp-Dienste einschließlich Apache wurden neu gestartet

Und ich bekomme immer noch den gleichen Fehler. Ich habe bestätigt, dass ich die richtige php.ini mit phpinfo() bearbeite. Ich weiß nicht, warum es sich immer noch beschwert.

Gibt es eine Möglichkeit, 100% zu überprüfen, ob meine cacert.pem-Datei gefunden und gelesen wird? Ich habe phpinfo() geprüft und es wird dort nichts erwähnt. Soll es irgendwo sagen was, wenn es cacert.pem benutzt?

Vielen Dank!

20
jd182

Ich hatte genau das gleiche Problem

Folge diesen Schritten:

Laden Sie die folgende Datei herunter - cacert.pem

Laden Sie dann die folgende Datei herunter - thawte_Premium_Server_CA.pem

Öffnen Sie die zweite Datei in einem Texteditor und kopieren Sie ihren Inhalt in die erste Datei (cacert.pem am unteren Ende/Ende).

Speichern Sie cacert.pem und fügen Sie Ihrem php.ini die folgenden Zeilen hinzu:

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

Ändern Sie das Verzeichnis offensichtlich in das Verzeichnis, in dem sich Ihr Pem befindet. Starten Sie den lokalen PHP-Server (xampp/wamp) neu. Dann wird es einwandfrei funktionieren.

vielen Dank.

50
codemonkey

Bearbeiten Sie TinyHttp.php

und füge CURLOPT_SSL_VERIFYPEER => FALSE, bei $ opts array hinzu

8
Nuno Ferro

Ich benutze Twilio nicht, aber ich bin unter Windows und hatte genau die im OP beschriebenen Probleme. Ich habe dies gelöst, indem ich die ca-bundle.crt-Datei von dieser Seite heruntergeladen habe und meine php.ini darauf verweise: http://curl.haxx.se/docs/caextract.html

3
gazareth

In meinem Fall funktionierte das cacert.pem aus dem Download-Link oben nicht, aber das cacert.pem aus dem vorherigen Bibliothekspaket twilio php wie 3.12.5 hat funktioniert. Ich habe twilio.php in einem neueren Paket geändert, um die folgenden zwei Zeilen hinzuzufügen

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

an das entsprechende Verzeichnis als älteres Paket und kopierte die Datei cacert.pem auch in ein neueres Paket.

1
leshan

Anstatt tiny_http.php zu hacken, können Sie Ihre eigenen cURL-Optionen hinzufügen, indem Sie den CurlClient-Konstruktor von Twilio mit den von Ihnen gewählten Optionen aufrufen.

    $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

Hier ist die offizielle Antwort von Twilio:

Versuchen Sie Folgendes, um dieses Problem zu beheben:

1 Laden Sie die folgende Pem-Datei herunter: https://twilio.zendesk.com/attachments/token/EenviU5Rv4KHUzGM6VP5UijB0/?name=cacert.pem

2 Kopieren Sie diese Datei entweder nach c:\cert\cacert.pem (Windows) oder in einen anderen Pfad Ihrer Unix/Linux/Mac-Installation

3 Öffnen Sie die php.ini-Datei in Ihrem bevorzugten Editor

Wenn die folgende Konfiguration string: curl.cainfo in Ihrer php.ini vorhanden ist, entfernen Sie das Kommentarzeichen, indem Sie ";" entfernen und den Pfad ändern, um ihn auf die an diese E-Mail angehängte Datei cacert.pem zu verweisen, z.

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

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

5 Bitte starten Sie Ihren Apache-Dienst neu, um die Änderung zu übernehmen (sehr wichtig!).

0
Jonathan

Für mich funktionierte keine der hier geposteten Antworten. 

Aber dann habe ich mein PHP auf 7.0.1 * aufgerüstet und hatte diesen Fehler nicht mehr: 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 statt C:\wamp\bin\php\php5.4.3)

Und mein C:\wamp\bin\php\php-7.0.1-Win32-VC14-x64\php.ini hatte curl.cainfo=C:/wamp/cacert.pem bereits enthalten.

0
Ryan

Hinzufügen dieser Antwort, da niemand den [ini-tag] erwähnt

php.ini

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

cacert.pem wird hier heruntergeladen: https://twilio.zendesk.com/attachments/token/EenviU5Rv4KHUzGM6VP5UijB0/?name=cacert.pem

0
Jonathan