"In Google App Engine auf localhost wurde kein System-CA-Paket gefunden"

9

Ich arbeite an einer App, die ich in der Google App Engine (GAE) ausführen werde, die auf die GDrive-API zugreifen muss. Wenn es in der Cloud läuft, kann ich meine spezielle domänenweite Autorisierung verwenden, damit meine Benutzer automatisch authentifiziert werden und ich die gdrive API ohne Probleme benutzen kann. Das funktioniert sehr gut.

Allerdings wird < beim Testen auf localhost die domänenweite Authentifizierung nicht funktionieren, da wir Ihr Google-Konto nicht authentifizieren. Sie dürfen nur angeben, dass Sie ein beliebiger Nutzer sind . Also, was ich mache, ist die Instantiierung meiner Google $client auf localhost und in der GAE. In der GAE verwende ich die spezielle Domain-weite Authentifizierung, auf localhost, dann verwende ich die traditionelle Google Client-Konfiguration mit einer Client-ID, Client-Secret, OAuth-Token-Verarbeitung, etc.

Ich leite auf Google um, ich sage Google, den Zugriff zu erlauben, und dann leitet mich Google zurück zu localhost, um den oauth-Prozess abzuschließen. Wenn ich die code von Google nehme und anrufe:

%Vor%

Ich bekomme einen SSL-Fehler über ein fehlendes CA-Paket.

  

In keinem der gemeinsamen Systeme konnte ein System-CA-Paket gefunden werden   Standorte. PHP-Versionen vor 5.6 sind nicht richtig konfiguriert   das CA-Bundle des Systems standardmäßig zu verwenden. Um Peer zu verifizieren   Für Zertifikate müssen Sie den Pfad auf der Festplatte einem   Zertifikatspaket für die Anfrageoption 'Verify':    Ссылка . Wenn Sie nicht   Benötigen Sie ein bestimmtes Zertifikatspaket, dann bietet Mozilla ein allgemeines   verwendetes CA - Paket, das hier heruntergeladen werden kann (zur Verfügung gestellt von der   Betreuer von cURL):    Ссылка .   Sobald Sie ein CA-Bundle auf der Festplatte zur Verfügung haben, können Sie die   'openssl.cafile' PHP ini Einstellung, um auf den Pfad zu der Datei zu zeigen,   Sie können die Option zum Verifizieren der Anfrage weglassen. Sehen    Ссылка für weitere Informationen.

Ich habe die .crt-Datei heruntergeladen, und ich habe auch versucht, ihre .pem-Datei herunterzuladen, und ich habe versucht, meine php.ini auf verschiedene Arten zu konfigurieren, damit sie diese Dateien verwendet ...

%Vor%

oder

%Vor%

oder

%Vor%

oder

%Vor%

Aber keiner von ihnen scheint zu funktionieren oder einen Unterschied zu machen. Was vermisse ich?

BEARBEITEN:

Wenn ich mir sage, dass ich dasselbe auf Produktion und localhost authentifizieren soll, bedeutet das, dass Sie nicht verstehen, was ich verlange oder warum ich den Client verwenden muss. Meine Frage betrifft die Zertifikate.

    
Kenny Wyland 27.01.2016, 23:20
quelle

1 Antwort

3

Ich fand schließlich eine Lösung aus dieser Antwort , bitte stimme ihre Antwort ab.

  

Wenn Sie den Code von Google und Guzzle durchsehen, müssen Sie möglicherweise angeben   wo das Zertifikatsbündel gefunden werden kann, indem man so etwas macht wie das   wenn Sie den Google Client und vor dem   authenticate () call:

%Vor%      

Dadurch wird das Standardverhalten überschrieben und Sie können angeben, wo   Bündel ist.

    
Kenny Wyland 23.02.2016, 05:00
quelle

Tags und Links