Php file_get_contents liefert Fehler

Hallo,
PHP Execute liefert neuerdings Fehlermeldungen, obwohl sie bisher reibungslos das Ergebnis zurück lieferte.

Die PHP-Datei hat folgenden Inhalt, wobei die URL hier nur ein Dummy ist:
Code :

<?php function sendAuResponse() { $result = file_get_contents('https://www.xyz.de/confirmOrder.php?oid=8328&jobId=226.735'); echo $result; } ?>

Die Fehlermeldung lautet:
Code :
Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version in /Users/4d/Library/Caches/4D/DataBase…/tmp.php on line 3

Warning: file_get_contents(): Failed to enable crypto in /Users/4d/Library/Caches/4D/DataBase…/tmp.php on line 3

Warning: file_get_contents(https://www.xyz.de/confirmOrder.php?oid=8328&jobId=226.735’): failed to open stream: operation failed in /Users/4d/Library/Caches/4D/DataBase…/tmp.php on line 3

Ich vermute eine Umstellung der serverseitigen SSL-Einstellungen.
Wie kann ich den 4D-Befehl mit einer anderen TLS-Version ausführen?

Mit freundlichen Grüßen
J.Puff

neuerdings? was wurde geändert, welche 4D version verwenden Sie jetzt und welche davor?

4D verwendet seit 4D v17 R5 eine andere PHP Version (PHP 7 statt 5). Dies kann Anpassungen der PHP Skripte erfordern, siehe Handbuch.

Falls es mit PHP 5 auftritt: diese ist natürlich schon älter, es kann also im Gegenteil notwendig sein das Sie auf neuere Version Aktualisierung.

Für den hier gezeigten Aufruf: tlsv1 alert protocol version in

Das sieht aus als ob der verwendete Server noch TLS v1.0 verwendet. Dieser ist als hoch unsicher angesehen und wird mittlerweile von fast allen Browsern abgelehnt. Auch von 4D.

Ob PHP 7 noch TLS v1.0 kann müssen Sie im PHP Handbuch nachlesen.

Wenn Sie stattdessen den 4D Befehl HTTP Get verwenden, müssen Sie 4D explizit anweisen ein unsicheres Protokoll zu verwenden:
https://doc.4d.com/4Dv18/4D/18/SET-DATABASE-PARAMETER.301-4505363.de.html
(Min TLS version)

googeln Sie mal “tls 1.2”

Hallo Herr Maul,
danke für Ihre Antwort.

Neuerdings bezieht sich auf einen Zeitraum von ca. 1 Woche, die verwendete 4D Version, 17.2, ist seitdem unverändert. Ein Test mit v18 lieferte die gleiche Fehlermeldung.

Ich vermute daher, dass sich etwas an dem Webserver verändert hat, der mit PHP angesprochen wird.

Mit freundlichen Grüßen
J. Puff

Hallo Herr Maul,
seitens des Kunden wurde das TLS Protokoll auf Version 1.2 umgestellt, vorher war es TLS 1.1. Damit klappte der Aufruf.

Laut Handbuch wird TLS 1.2 für 4D Server, 4D Web Server und 4D SQL Server verwendet.
Aber welche Version verwendet der Befehl PHP execute?
Wie kann ich 4D auch mit PHP dazu bringen, TLS 1.2 zu verwenden?

Mit freundlichen Grüßen
J. Puff

: Johannes PUFF

Wie kann ich 4D auch mit PHP dazu bringen, TLS 1.2 zu verwenden?

Update auf 4D v18. Dadurch wird PHP 7 verwendet und das unterstützt TLS 1.2

Alternativ für 4D v17: eigenen PHP Interpreter compilieren und diesen als “externen Interpreter” nutzen. Ist allerdings nicht ganz trivial.

Hallo Herr Maul,
das hatte ich auch gedacht, jedoch auch v18 liefert bei PHP GET FULL RESPONSE folgende Werte:
stdOut:
Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in /Users/user/Documents/_4D-Development/v18_Test/Resources/tmp.php on line 3
Warning: file_get_contents(): Failed to enable crypto in /Users/user/Documents/_4D-Development/v18_Test/Resources/tmp.php on line 3
Warning: file_get_contents(https://www.dummyurl.de/supplier/ppp/actions/confirmOrder.php?oid=8328&jobId=226.735&priceNet=115.50): failed to open stream: operation failed in /Users/user/Documents/_4D-Development/v18_Test/Resources/tmp.php on line 3
errBezeichnungen:
X-4DPHP-Error-php-interpreter
errWerte:
PHP Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in /Users/user/Documents/_4D-Development/v18_Test/Resources/tmp.php on line 3
PHP Warning: file_get_contents(): Failed to enable crypto in /Users/user/Documents/_4D-Development/v18_Test/Resources/tmp.php on line 3
PHP Warning: file_get_contents(https://www.dummyurl.de/supplier/ppp/actions/confirmOrder.php?oid=8328&jobId=226.735&priceNet=115.50): failed to open stream: operation failed in /Users/user/Documents/_4D-Development/v18_Test/Resources/tmp.php on line 3

Haben Sie dazu eine Idee?

Mit freundlichen Grüßen
J. Puff

Prinzipiell nein.

Möglich: 4D v18.0 64-bit MacOS X 10.13

10.13 rutscht ziemlich schnell raus. Es gibt immer mehr Probleme mit 10.13, 4D als Entwicklerversion ist nicht mehr dafür freigegeben, Runtime/Client sollte aber noch gehen.

Sie sollten Ihren Rechner möglichst umgehend auf 10.14, besser 10.15, aktualisieren.

Wenn es daran nicht liegt:
bitte TAOW Fall aufmachen, 4D Code, PHP Code und eine Test-URL angeben, damit wir den Datenverkehr analysieren können.

Aber trotzdem nochmal, wie bereits geschrieben:
für eine HTTP Abfrage möchte ich wirklich ausdrücklich empfehlen HTTP Get zu verwenden.
Das ist schneller und wir aktualisieren die darunter liegende Sicherheitslibrary (OpenSSL) regelmässig.