search_it icon indicating copy to clipboard operation
search_it copied to clipboard

Socket-Fehler - SSL

Open tbaddade opened this issue 6 years ago • 22 comments

  • YRewrite
  • Multidomain
  • Indexierung erfolgte Lokal
  • Domains sind auch Lokal vorhanden wie
    • https://domain-a.localhost
    • https://domain-b.localhost

Fehlermeldung bei Schrittweiser Indexierung

Warning | nicht indexiert, Socket-Fehler https://domain.localhost/path/?search_it_build_index=do-it-with-yrewrite fsockopen(): SSL operation failed with code 1. OpenSSL Error messages:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

Diese Warning kommt bei jeder Domain. Somit auch die, mit der ich im Backend eingeloggt bin und es keinen Zertifikatshinweis gibt..

tbaddade avatar Sep 19 '19 09:09 tbaddade

Puh. Da weiß ich wirklich nicht... Ich habe kein SSL lokal am Start. Ehrlich gesagt klingt die Fehlermeldung auch nicht nach etwas, was unmittelbar/notwendigerweise mit search it zu tun hat. Google meint, es könnte was mit HTTP-Headern zu tun haben, die ich meinem Socket-Aufruf mitgeben müsste... das übersteigt aber gerade meine Möglichkeiten.

tyrant88 avatar Sep 23 '19 12:09 tyrant88

Fände es gut, wenn man das Indexieren auch ohne socket machen könnte. So benötigt man erst einmal ein Zertifikat für die Domain und kann lokal bzw. auf der Arbeitsdomain nicht weiter arbeiten.

tbaddade avatar Feb 03 '20 15:02 tbaddade

https://www.php.net/manual/de/context.ssl.php kann man evtl parametrisch abschalten.

AWqxKAWERbXo avatar Feb 03 '20 16:02 AWqxKAWERbXo

Sorry, ich bin immer noch auf dem Stand, dass da bei dir steht "certificate verify failed". Du möchtest doch lokal verschlüsselt mit deiner website kommunizieren, weil du sie ja mit https ansprichst. Aber die search it-Aufrufe sollen dann unverschlüsselt sein oder mit einem nicht verifizierbaren Zertifikat funktionieren? Oder meinst du das verifiziert nur nicht über sockets? Da verstehe ich irgendwas noch nicht.

Und mit "ohne Socket" meinst du jetzt "nicht über das Frontend" indexieren?

tyrant88 avatar Feb 04 '20 08:02 tyrant88

Man kann lokal aktuell search_it nicht nutzen, da eine Indexierung nicht funktioniert. So kann man den Code der Module nicht weiter entwickeln und ist darauf angewiesen das ganze online zu stellen.

Ein Zertifikat ist lokal nach getgrav.org hinterlegt. Das wird scheinbar aber nicht akzeptiert. Daher finde ich, sollte es in search_it eine Möglichkeit geben zur Not den ganzen Teil auch via Backend indexieren zu können oder eben ggf. über eine Option die unter dem Link von @alexplusde vorhanden ist.

tbaddade avatar Feb 04 '20 09:02 tbaddade

Warum formulierst du das so? Das nervt echt. Natürlich kann man search it lokal nutzen. Man kann search it lokal nicht mit einem self-signed-Zertifikat nutzen. Korrekt. Weil man im Gegesatz zum Browser nicht die Möglichkeit hat auf "ignorieren - ich weiß was ich tue" zu klicken. Ich entwickle halt lokal immer ohne https. Ich habe wohl keine Fälle wo es auf https ankommt.

Das andere ist das alte Thema. Frontend vs Backend. Ich hab schon gemerkt ich komme um das Anbieten eines "Backend-Modus" auf lange Sicht nicht herum.

tyrant88 avatar Feb 04 '20 10:02 tyrant88

Warum formulierst du das so? Das nervt echt.

Das ist halt der aktuelle Stand. Das es nervt sorry. Ich schließe.

tbaddade avatar Feb 04 '20 12:02 tbaddade

Auf http umzustellen für den Moment der Indexierung ist keine Option?

AWqxKAWERbXo avatar Feb 04 '20 12:02 AWqxKAWERbXo

Auf http umzustellen für den Moment der Indexierung ist keine Option?

Kann man sicherlich machen, aber willst du wirklich jedesmal alles vor und nach dem Indexieren ggf. htaccess, yrewrite und die Systemseite anpassen wollen?

tbaddade avatar Feb 04 '20 12:02 tbaddade

Jedes Mal... bei mir sind das dann nur 2-3 Mal, aber bei dir ist das vielleicht anders.

Ich war aber auch kein Fan davon, die anderen Indexierungsoptionen zu streichen und das weiß @tyrant88. #108

Das andere ist das alte Thema. Frontend vs Backend. Ich hab schon gemerkt ich komme um das Anbieten eines "Backend-Modus" auf lange Sicht nicht herum.

Das ist doch eine konstruktive Perspektive, wäre das für dich gut? @tbaddade

Das eigentliche Problem ist imho, dass es nicht so leicht ist, Tools wie open-ssl am heimischen Rechner in Betrieb zu nehmen. Wenn man das macht, ist man verschiedene Probleme los.

AWqxKAWERbXo avatar Feb 04 '20 13:02 AWqxKAWERbXo

Das ist doch eine konstruktive Perspektive, wäre das für dich gut?

Sicherlich und das würde nicht nur uns helfen.

tbaddade avatar Feb 04 '20 13:02 tbaddade

Weiß jemand, ob sich bei diesem Problem hier im letzten Jahr etwas getan hat?

tbaddade avatar Feb 03 '21 10:02 tbaddade

Ja, ich. Ich habe an search it dahingehend noch nichts geändert. Die rex_socket Library kann glaube ich immer noch nicht mit self-signed certificates arbeiten.

Ich weiß nicht wie experimentierfreudig du bist, du könnst mal als finsteren Hack probieren die Zeile https://github.com/redaxo/redaxo/blob/master/redaxo/src/core/lib/util/socket/socket.php#L339 damit

$context = stream_context_create([
                'ssl' => [
                    'verify_peer' => true,
                    'allow_self_signed' => true
                ]
            ]);
$this->stream = @stream_socket_client($host.':'.$this->port, $errno, $errstr, ini_get("default_socket_timeout"), STREAM_CLIENT_CONNECT, $context);

zu ersetzen. Würde mich interessieren, ob das funktioniert.

tyrant88 avatar Feb 03 '21 12:02 tyrant88

Danke für den Hack, aber leider auch hier Socket-Fehler

03.02.2021 14:50:30 | Error | nicht indexiert, Socket-Fehler: https://domain-a.localhost/article/?search_it_build_index=do-it-with-yrewritestream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed

tbaddade avatar Feb 03 '21 13:02 tbaddade

versuch noch mal "verify_peer"=> false

tyrant88 avatar Feb 03 '21 13:02 tyrant88

am Besten noch 'verify_peer_name' => false dazu

tyrant88 avatar Feb 03 '21 14:02 tyrant88

Das sieht schon besser aus. Der Index wurde erstellt. Dazu kamen zwei Warnings. Weiß nicht ob du diese bereits kennst. Hat aber nichts weiter mit dem Issue zu tun.

Warning: Invalid argument supplied for foreach() in src/addons/search_it/lib/search_it.php on line 360
Warning: Invalid argument supplied for foreach() in src/addons/search_it/lib/search_it.php on line 1100
Index wurde erstellt

Wie jetzt weiter? Issue für die Socket-Klasse aufmachen oder magst du hier im AddOn etwas erweitern?

tbaddade avatar Feb 03 '21 14:02 tbaddade

Lass das hier auf jeden Fall mal offen.

Man könnte es tatsächlich diskutierien, ob man der rex_socket-Klasse die Möglichkeit gibt SSL verify abzuschalten.. also dort gern ein issue.

tyrant88 avatar Feb 03 '21 14:02 tyrant88

Ah sehe gerade dergel hat das in 5.13 eingebaut, cool. Dann muss ich das irgendwie auch bei mir reinnehmen...

tyrant88 avatar Nov 17 '21 15:11 tyrant88

Heisst das ich kann bald search it lokal testen und einrichten?? das wäre sooooo toll!

olien avatar Nov 18 '21 11:11 olien

kannst du ohne SSL auch so schon :-) Ja kommt bald. muss nur noch überlegen WIE ich das einbaue...

  • [ ] Ich will lokal mit meinem eigenen Rechner verschlüsselt kommunizieren :-)

tyrant88 avatar Nov 18 '21 11:11 tyrant88

Ist im neuen Release eingebaut ab REDAXO 5.13

tyrant88 avatar Dec 20 '21 00:12 tyrant88