Der Fehler, den viele Leute mit der Facebook-Authentifizierung bekommen, ist:
%Vor%Und die einzige Information, die ich darüber finden kann, schlägt vor, die folgenden Codezeilen zu curl hinzuzufügen:
%Vor%Ich weiß, das funktioniert, aber was geht hier vor? Gibt es keine Servereinstellungen / Konfigurationen, die geändert werden können, anstatt die facebook.php zu hacken?
Der folgende Code weist die cURL an, NICHT zu überprüfen, ob Sicherheitszertifikate korrekt sind. Daher verschwindet der Fehler.
%Vor%Wenn Sie eine Verbindung zu einem Remoteserver mit SSL herstellen, ist das Zertifikat möglicherweise ungültig, abgelaufen oder nicht von einer anerkannten Zertifizierungsstelle signiert. Das cURL prüft es normalerweise.
CURLOPT_SSL_VERIFYHOST:
CURLOPT_SSL_VERIFYPEER: FALSE, um zu verhindern, dass CURL das Zertifikat des Peers überprüft. Alternative Zertifikate, gegen die verifiziert werden kann, können mit der Option CURLOPT_CAINFO angegeben werden oder ein Zertifikatverzeichnis kann mit der Option CURLOPT_CAPATH
angegeben werden. CURLOPT_SSL_VERIFYHOST muss möglicherweise ebenfalls TRUE oder FALSE sein, wenn CURLOPT_SSL_VERIFYPEER deaktiviert ist (Standardeinstellung ist 2).
Um korrekt zu überprüfen, müssen wir überprüfen, ob das uns vorgelegte Zertifikat echt ist. Wir tun dies, indem wir es mit einem Zertifikat vergleichen, dem wir vertrauen *.
Wenn die Remote-Ressource durch ein Zertifikat geschützt ist, das von einer der Haupt-CAs wie Verisign, GeoTrust und anderen ausgestellt wurde, können Sie sicher mit Mozillas CA-Zertifikatsbündel vergleichen, das Sie von Ссылка
Speichern Sie die Datei cacert.pem irgendwo auf Ihrem Server und legen Sie die folgenden Optionen in Ihrem Skript fest.
%Vor%Wenn Sie eine Verbindung zu einer Ressource herstellen, die durch ein selbstsigniertes Zertifikat geschützt ist, müssen Sie lediglich eine Kopie des Zertifikats im PEM-Format anfordern und an die Datei cacert.pem des obigen Absatzes anhängen.
In meinem Fall konnte ich curl_setopt nicht verwenden, weil ich die Facebook-API-Klassen (Bedingungen des Projekts, in dem ich gearbeitet habe) nicht bearbeiten konnte.
Ich habe das Problem gelöst, indem ich cacert.pem einen Pfad hinzugefügt habe, der von Ссылка in meine php.ini heruntergeladen wurde
%Vor%Ich hatte gerade das gleiche Problem und die Deaktivierung der Peer-Verifizierung ist in meinem Fall nicht akzeptabel. Ich habe die Datei fa_ca_chain_bundle.crt aktualisiert (aus facebooks gitbub ) und es funktioniert jetzt.
Grüße, Marek
Tags und Links php ssl curl certificate verify