Ankündigung

Einklappen
Keine Ankündigung bisher.

Http/udp/shell

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #31
    Zitat von saegefisch Beitrag anzeigen
    Frage: Kann man dem Standard-HTTP/UDP/SHELL-Befehl eine insecure-Ausführung beibringen?
    Kann ich nicht sagen, aber man kann dem file_get_contents() beibringen die richtigen root CA Zertifikate zu verwenden.

    Ich vermute nämlich, dass dein Problem daran liegt, dass der ausstellenden CA nicht vertraut wird, da das Root Zertifikat nicht im certificate bundle enthalten ist, den openssl in PHP verwendet.

    So könnte die korrigiert werden:

    Das aktuelle Certificate-Bundle von curl herunterladen.

    https://curl.se/ca/cacert.pem

    Dieses z.B. in /etc/ssl/certs speichern.

    Dann das SwissSign Server Gold G22 Certificate downloaden, denn mit dem wurde laut Auskunft in Chrome das SSL Zertifikat von gruschu.hessen.de signiert:

    Hier ist die Übersichtsseite der SwissSign CA Certificates: https://www.swisssign.com/support/ca-prod.html

    Direktlink zum richtigen CA Certificate: https://swisssign.net/cgi-bin/author...127D98C8AE.pem

    Dieses dann an das curl-certificate-bundle anhängen:

    Und dann in der php.ini das openssl_cafile setzen (fast ganz unten):

    openssl.cafile=/etc/ssl/certs/cacert.pem

    Danach sollte es eigentlich funktionieren.

    Und hier mal als bash Kommandos per SSH Terminal

    Code:
    cd /root
    wget https://curl.se/ca/cacert.pem
    wget https://swisssign.net/cgi-bin/authority/download/E7F1E7FD2E53AD11E5811A57A4738F127D98C8AE.pem
    cat E7F1E7FD2E53AD11E5811A57A4738F127D98C8AE.pem >> cacert.pem
    cp cacert.pem /etc/ssl/certs/
    sed -i 's/; openssl.cafile=/openssl.cafile=\/etc\/ssl\/certs\/cacert.pem/' /etc/php.ini

    Kommentar


      #32
      Lieben Dank, André!
      Deine Lösung ist (vermeintlich) so banal und nachvollziehbar, dass ich mich danach ein wenig ärgere, nicht selber drauf gekommen zu sein. Okay, ich hätte nicht gewusst, in welches INI, aber der Rest...naja, ich habe schlich zu selten Kontakt mit diesen Themen...

      Bin erst mal drüber gestolpert, dass es mit curl im Terminal nicht funktionierte. Auch nicht nach reboot. Aber da muss das CA-File sicher noch woanders parametrisiert werden.
      Denn in Edomi geht es jetzt wieder völlig ohne Fehler. Du bist klasse; ich danke Dir für Deine Unterstützung!

      Warum jetzt die selbe URL im Browser JSON mit Daten liefert und die selbe URL aus Edomi heraus zwar - nach der obigen Änderung fehlerfrei - ein wohl-geformtes JSON zurück bekommt mit dem selben Kopf, aber ohne Messwerte, muss ich jetzt erforschen. Aber das ist hier nicht mehr das Thema
      Zuletzt geändert von saegefisch; 14.04.2021, 17:51.

      Kommentar


        #33
        gaert : Vorschlag für "uff die Liste": Vielleicht könnte eine oder beide gelegentlich Eingang finden:
        • Bei einem HTTP/UDP/SHELL-Befehl das --insecure-Flag erlauben
        • Obiges Lösungsweg in Online-Hilfe zum HTTP-Befehl vermerken, z.B. "Bei security-Fehlern nach Aufruf von https-Seiten ist meist ein fehlendes Zertifkat ursächlich. Es kann manuell der /etc/ssl/certs/cacert.pem hinzu gefügt und in der PHP-ini der Pfad zur CA-Datei ergänzt werden: openssl.cafile=/etc/ssl/certs/cacert.pem". Damit würde es bei der Suche in der Online-Hilfe nach "https" auch leicht gefunden werden.

        Kommentar


          #34
          Nun wundere ich mich doch, dass
          • cURL (getestet mit curl -X POST -k "<url>" und curl -X GET -k "<url>") und Browser (Chrome, Firefox) mit der selben URL Messwerte liefern,
          • edomi mit dem HTTP-Befehl zwar ein JSON zurück bekommt, aber ohne Messwerte.
          Das ganze hat bis vor einer Weile über lange Zeit problemlos funktioniert. Dann kam das security-Thema (s.o.), was nun gelöst ist; es kommt nun wieder JSON zurück, aber das Array features[] mit den Messwerten ist leer.

          Aber wodurch könnten sich Browser/cURL vom HTTP-Befehl unterscheiden?
          Hat jemand eine Idee?

          Beispiel URL: https://gruschu.hessen.de/arcgis/res...))&outFields=*
          Code:
          https://gruschu.hessen.de/arcgis/rest/services/gruschu/Auswertung/MapServer/4/query?f=json&where=((MESSSTELLE_ID=%2715499%27)AND(MESSDATUM%3E=%2715.07.2020%27))&outFields=*
          Zuletzt geändert von saegefisch; 14.04.2021, 18:52.

          Kommentar


            #35
            Also bei mir kommt das hier raus wenn ich die URL als HTTP-GET in EDOMI trigger:

            {"displayFieldName":"MESSDATUM","fieldAliases":{"M ESSSTELLE_ID":"Mst.-ID","KURZNAME":"Kurzname","BEZEICHNUNG":"Name","ME SSDATUM":"Datum","ABSTICH":"Abstich (m unter MP)","NN":"Wasserspiegel (m ü. NN)","GOK":"Wasserspiegel (m unter GOK)","TEMPERATUR":"Wassertemperatur (°C)","ESRI_OID":"ESRI_OID"},"fields":[{"name":"MESSSTELLE_ID","type":"esriFieldTypeInteg er","alias":"Mst.-ID"},{"name":"KURZNAME","type":"esriFieldTypeStrin g","alias":"Kurzname","length":7},{"name":"BEZEICH NUNG","type":"esriFieldTypeString","alias":"Name", "length":50},{"name":"MESSDATUM","type":"esriField TypeDate","alias":"Datum","length":8},{"name":"ABS TICH","type":"esriFieldTypeDouble","alias":"Abstic h (m unter MP)"},{"name":"NN","type":"esriFieldTypeDouble","a lias":"Wasserspiegel (m ü. NN)"},{"name":"GOK","type":"esriFieldTypeDouble"," alias":"Wasserspiegel (m unter GOK)"},{"name":"TEMPERATUR","type":"esriFieldTypeD ouble","alias":"Wassertemperatur (°C)"},{"name":"ESRI_OID","type":"esriFieldTypeOID ","alias":"ESRI_OID"}],"features":[{"attributes":{"MESSSTELLE_ID":15499,"KURZNAME":"5 07191","BEZEICHNUNG":"KELSTERBACH","MESSDATUM":159 4771200000,"ABSTICH":6.5899999999999999,"NN":89.48 9999999999995,"GOK":5.75,"TEMPERATUR":10.9,"ESRI_O ID":7112}},{"attributes":{"MESSSTELLE_ID":15499,"K URZNAME":"507191","BEZEICHNUNG":"KELSTERBACH","MES SDATUM":1594857600000,"ABSTICH":6.5899999999999999 ,"NN":89.489999999999995,"GOK":5.75,"TEMPERATUR":1 0.9,"ESRI_OID":7113}},{"attributes":{"MESSSTELLE_I D":15499,"KURZNAME":"507191","BEZEICHNUNG":"KELSTE RBACH","MESSDATUM":1594944000000,"ABSTICH":6.60000 00000000005,"NN":89.480000000000004,"GOK":5.759999 9999999998,"TEMPERATUR":10.9,"ESRI_OID":7114}},{"a ttributes":{"MESSSTELLE_ID":15499,"KURZNAME":"5071 91","BEZEICHNUNG":"KELSTERBACH","MESSDATUM":159503 0400000,"ABSTICH":6.6000000000000005,"NN":89.48000 0000000004,"GOK":5.7599999999999998,"TEMPERATUR":1 0.9,"ESRI_OID":7115}},{"attributes":{"MESSSTELLE_I D":15499,"KURZNAME":"507191","BEZEICHNUNG":"KELSTE RBACH","MESSDATUM":1595116800000,"ABSTICH":6.60000 00000000005,"NN":89.480000000000004,"GOK":5.759999 9999999998,"TEMPERATUR":10.9,"ESRI_OID":7116}},{"a ttributes":{"MESSSTELLE_ID":15499,"KURZNAME":"5071 91","BEZEICHNUNG":"KELSTERBACH","MESSDATUM":159520 3200000,"ABSTICH":6.6100000000000003,"NN":89.46999 9999999999,"GOK":5.7700000000000005,"TEMPERATUR":1 0.9,"ESRI_OID":7117}},{"attributes":{"MESSSTELLE_I D":15499,"KURZNAME":"507191","BEZEICHNUNG":"KELSTE RBACH","MESSDATUM":1595289600000,"ABSTICH":6.61000 00000000003,"NN":89.469999999999999,"GOK":5.770000 0000000005,"TEMPERATUR":10.9,"ESRI_OID":7118}},{"a ttributes":{"MESSSTELLE_ID":15499,"KURZNAME":"5071 91","BEZEICHNUNG":"KELSTERBACH","MESSDATUM":159537 6000000,"ABSTICH":6.6200000000000001,"NN":89.46000 0000000008,"GOK":5.7800000000000002,"TEMPERATUR":1 0.9,"ESRI_OID":7119}},{"attributes":{"MESSSTELLE_I D":15499,"KURZNAME":"507191","BEZEICHNUNG":"KELSTE RBACH","MESSDATUM":1595462400000,"ABSTICH":6.62000 00000000001,"NN":89.460000000000008,"GOK":5.780000 0000000002,"TEMPERATUR":10.9,"ESRI_OID":7120}},{"a ttributes":{"MESSSTELLE_ID":15499,"KURZNAME":"5071 91","BEZEICHNUNG":"KELSTERBACH","MESSDATUM":159554 8800000,"ABSTICH":6.6200000000000001,"NN":89.46000 0000000008,"GOK":5.7800000000000002,"TEMPERATUR":1 0.9,"ESRI_OID":7121}},{"attributes":{"MESSSTELLE_I D":15499,"KURZNAME":"507191","BEZEICHNUNG":"KELSTE RBACH","MESSDATUM":1595635200000,"ABSTICH":6.62000 00000000001,"NN":89.460000000000008,"GOK":5.780000 0000000002,"TEMPERATUR":10.9,"ESRI_OID":7122}},{"a ttributes":{"MESSSTELLE_ID":15499,"KURZNAME":"5071 91","BEZEICHNUNG":"KELSTERBACH","MESSDATUM":159572 1600000,"ABSTICH":6.6299999999999999,"NN":89.45000 0000000003,"GOK":5.79,"TEMPERATUR":10.9,"ESRI_OID" :7123}},{"attributes":{"MESSSTELLE_ID":15499,"KURZ NAME":"507191","BEZEICHNUNG":"KELSTERBACH","MESSDA TUM":1595808000000,"ABSTICH":6.6299999999999999,"N N":89.450000000000003,"GOK":5.79,"TEMPERATUR":10.9 ,"ESRI_OID":7124}},{"attributes":{"MESSSTELLE_ID": 15499,"KURZNAME":"507191","BEZEICHNUNG":"KELSTERBA CH","MESSDATUM":1595894400000,"ABSTICH":6.62999999 99999999,"NN":89.450000000000003,"GOK":5.79,"TEMPE RATUR":10.9,"ESRI_OID":7125}},{"attributes":{"MESS STELLE_ID":15499,"KURZNAME":"507191","BEZEICHNUNG" :"KELSTERBACH","MESSDATUM":1595980800000,"ABSTICH" :6.6400000000000006,"NN":89.439999999999998,"GOK": 5.7999999999999998,"TEMPERATUR":10.9,"ESRI_OID":71 26}}]}
            Ich vermute, das ist auch das was du erwartest, oder?
            Hast du evtl. die URL falsch zusammengebaut? Ich habe natürlich einfach die von dir gepostete URL in den HTTP-GET Befehl kopiert.

            Kommentar


              #36
              Danke für Deine Rückmeldung - das ist in der Tat die gewünschte und erwartete Ausgabe. Bei mir kommt mit exakt dieser URL - am Ende ein leeres Array.

              Aber dann weiß ich, dass es nichts grundlegendes ist, sondern spezifisch bei mir -> dem muss ich nach gehen.. und weiß, dass es gehen muss.
              Mein System: edomi 2.03 auf CentOS 7.x mit PHP 7.4.16

              Code:
              {"displayFieldName":"MESSDATUM","fieldAliases":{"MESSSTELLE_ID":"Mst.-ID","KURZNAME":"Kurzname","BEZEICHNUNG":"Name","MESSDATUM":"Datum","ABSTICH":"Abstich (m unter MP)","NN":"Wasserspiegel (m ü. NN)","GOK":"Wasserspiegel (m unter GOK)","TEMPERATUR":"Wassertemperatur (°C)","ESRI_OID":"ESRI_OID"},"fields":[{"name":"MESSSTELLE_ID","type":"esriFieldTypeInteger","alias":"Mst.-ID"},{"name":"KURZNAME","type":"esriFieldTypeString","alias":"Kurzname","length":7},{"name":"BEZEICHNUNG","type":"esriFieldTypeString","alias":"Name","length":50},{"name":"MESSDATUM","type":"esriFieldTypeDate","alias":"Datum","length":8},{"name":"ABSTICH","type":"esriFieldTypeDouble","alias":"Abstich (m unter MP)"},{"name":"NN","type":"esriFieldTypeDouble","alias":"Wasserspiegel (m ü. NN)"},{"name":"GOK","type":"esriFieldTypeDouble","alias":"Wasserspiegel (m unter GOK)"},{"name":"TEMPERATUR","type":"esriFieldTypeDouble","alias":"Wassertemperatur (°C)"},{"name":"ESRI_OID","type":"esriFieldTypeOID","alias":"ESRI_OID"}],"features":[]}
              Nachtrag: 1:1-Kopie des HTTP-Befehls gemacht und in Logik eingebaut und jetzt habe ich auch Daten. Erstaunlich. Aber egal - Computer sind ja auch nur Menschen... jetzt geht es tatsächlich und ich habe wieder Grundwasserdaten. Was auch immer ich da verdaddelt hatte....
              Zuletzt geändert von saegefisch; 14.04.2021, 20:33. Grund: Nachtrag: Funktioniert wieder :)

              Kommentar


                #37
                Sehr gut! Schön, dass das Wasser wieder fließt

                Kommentar


                  #38
                  Zitat von jonofe Beitrag anzeigen

                  Kann ich nicht sagen, aber man kann dem file_get_contents() beibringen die richtigen root CA Zertifikate zu verwenden.

                  Code:
                  cd /root
                  wget https://curl.se/ca/cacert.pem
                  wget https://swisssign.net/cgi-bin/authority/download/E7F1E7FD2E53AD11E5811A57A4738F127D98C8AE.pem
                  cat E7F1E7FD2E53AD11E5811A57A4738F127D98C8AE.pem >> cacert.pem
                  cp cacert.pem /etc/ssl/certs/
                  sed -i 's/; openssl.cafile=/openssl.cafile=\/etc\/ssl\/certs\/cacert.pem/' /etc/php.ini
                  Möchte mich auch noch recht herzlich für diese Infos bedanken!

                  Seit ein paar Tagen hat mir nämlich mein LBS, der auch file_get_contents() verwendet, das Edomi-Log mit SSL-Fehlermeldungen gefüllt. (Ich rufe mit meinem LBS JSON-Wetterdaten im 5-Minuten-Takt ab, was entsprechend Log-Einträge generiert.)
                  Da es im Browser noch funktionierte und ich am LBS seit langem nichts geändert habe, hatte ich auch diesen Zertifikats-Verdacht. Ich wusste aber nicht, wo man das auf die Schnelle ändert.

                  Mit deinen Befehlen hat es aber super geklappt. (Natürlich musste ich das entsprechende root-Zertifikat von meiner Quelle runterladen.)
                  Nur der letzte sed-Befehl hat bei mir nicht geklappt. Es kam kein Fehler, aber im php.ini wurde nichts eingetragen. Habs dann manuell gemacht und neu gestartet. Jetzt läufts!

                  Kommentar

                  Lädt...
                  X