Fehler auf einem einzelnen Host mit wp_remote_get (), außer wenn sslverify auf false gesetzt ist

Ich teste ein Plugin auf HostGator, GoDaddy, DreamHost und DigitalOcean, das lokal mit VVV entwickelt. Ich benutze WordPress 4.4.2 auf der ganzen Linie.

Ich verwende wp_remote_get (), um Wetterdaten vom NOAA Text Data Server mit 3 verschiedenen Endpunkten abzurufen. Ich geriet in Schwierigkeiten, als ich den Test auf einen anderen Host, Arvixe, erweiterte, wo ich einen 400 Bad Request-Fehler für meinen dritten Endpunkt bekam. Die anderen funktionieren gut.

Ich habe festgestellt, dass die Einstellung sslverify arg auf false gesetzt wurde, um das Problem auf diesem Host zu beheben, aber ich weiß nicht, warum und ob das tatsächlich eine gute Sache ist. Das Plugin zeigt nur Daten an, die von NOAA gezogen wurden. Eine solche Überprüfung scheint jedoch unnötig und falsch zu sein.

Die seltsame Sache ist, ich habe wp-cli-Befehle für dieses Plugin geschrieben und sie funktionieren wie erwartet, mit den gleichen classn und Methoden ohne Fehler. Kommandozeile PHP auf diesem Host ist v5.5 und ich habe WordPress mit PHP 5.3 – 7.0 mit den gleichen Ergebnissen getestet.

Ich suche weiter und lese eine Antwort von Otto , die mich fragt, ob ich an der falschen Stelle nach einer Lösung suche.

Ich schätze jede Hilfe, die herausfindet, was das eigentliche Grundproblem sein könnte.

Irgendwelche Gedanken oder Vorschläge?

Weitere Details: Die Website auf Arvixe ist http Die anderen Test-Sites sind eine Mischung aus http / https, ohne Fehler. Das Zertifikat ist gültig

Bildbeschreibung hier eingeben

Solutions Collecting From Web of "Fehler auf einem einzelnen Host mit wp_remote_get (), außer wenn sslverify auf false gesetzt ist"

Dies ist wahrscheinlich der falsche Ort, um in die Details der Zertifikatsverifizierung einzusteigen, und ich bin mir nicht sicher, ob ich alles verstehe, daher konzentriert sich diese Antwort auf die WordPress-API.

Das Problem bei der Zertifikatsprüfung besteht darin, dass Sie eine Liste von Stammzertifikaten der Ausstellerunternehmen benötigen, um ein bestimmtes Zertifikat zu verifizieren. Diese Liste ändert sich und daher müssen Server mit den Informationen aktualisiert werden. Offensichtlich ist die Unterstützung von “browser-ähnlicher functionalität” nicht eines der wichtigsten Dinge, an die Serveradministratoren denken, und Ihre Software endet möglicherweise auf einem Server, auf dem sie überhaupt nicht definiert ist, oder einfach nur abgestandene Informationen.

Ottos Antwort beschreibt detailliert, wie wordpress core damit umgeht, und es stellt es als Paket von Root-Zertifikaten zur Verfügung, und es wird standardmäßig von der WordPress-http-API verwendet (überprüft auf 4.4, nicht sicher, wann es gestartet wird). Dennoch wird Ihr Plugin möglicherweise auf einer früheren Version installiert, die veraltete Informationen enthält (zu diesem Zeitpunkt, nur etwa eine Woche vor dem Start von 4.5 laufen nur etwa 50% der WordPress-Sites mit 4.4).

Also was kannst du tun?

  1. einfache Option: Lassen Sie den Benutzer entscheiden. Am Ende ist es sein Ruf, wie sicher er seine Seite haben will. Es kann sein, dass er sich nicht anstrengen kann oder will, um seine Wurzel-Zertifikate zu aktualisieren.

  2. Geben Sie Ihre eigenen Root-Zertifikate mit dem Plugin ein. Auf diese Weise können Sie Aktualisierungen bereitstellen, wenn die Stammzertifikate aktualisiert werden müssen. Das relevante core-API, das es behandelt, ist WP_HTTP :: request mit dem Parameter sslcertificates Parameter $ args. Übergeordnete HTTP-API-functionen übergeben diesen Parameter wahrscheinlich auf die eine oder andere Weise.