Nach Android Update kein Zugriff auf Apache 2

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Bis jetzt habe ich von mein Samsung Handy intern (Kein Zugriff übers Internet) Zugriff auf den Apache2 Server bekommen.
    Diese Tage habe ich ein Update auf mein Handy bekommen. Seit dem habe ich keinen Zugriff mehr auf den Webserver.
    Ich Denke, ich habe den Fehler gefunden. Es liegt daran das ich den Port 80 benutze. also ohne Verschlüsselung und das nach dem letzten Android Update, die Browser unverschlüsselte Verbindungen nicht mehr zulassen. Sowohl bei Chrome und Firefox.
    Habe bei den Einstellungen der Browser gesucht um das zu deaktivieren, aber leider nichts finden können. Auch im Internet nichts gefunden und wenn doch hat das nicht geholfen. Und den Port 443 im Apache aktivieren unter ports.conf brachte auch keinen Erfolg.
    HTTPS benötige ich eigentlich nicht. Denn den Browser im Handy benutze ich nur intern um meine Geräte zu steuern.
    Gibt es eine Möglichkeit in den Einstellungen des Browser das wieder Rückgängig zu machen?
    Was habe ich sonst für Möglichkeit um wieder Zugriff vom Handy auf den Apache zu bekommen?

    Noch zur Ergänzung. Die Probleme habe ich nur mit das Handy. Über den PC gibt es keine Probleme. Auch ein Tablett wo es kein Update mehr gibt.

  • Wie sprichst Du den Apache an, über IP oder DN?
    Gib in der Adresszeile auch das Protokoll mit an, und wenn Du nicht direkt eine Datei aufrufst, einen Slash am Ende. Beispiel:

    http://192.168.0.1/ bzw. bei DN: http://meinApache.lan/

    Das funktioniert zumindest auf mein Samsung-Tablett nach dem kürzlichen Update mit Firefox immer noch. Chrome nutze ich nicht.

    Und den Port 443 im Apache aktivieren unter ports.conf brachte auch keinen Erfolg.

    Aktivieren reicht nicht. Da mußte schon ein Zertifikat erstellen und dann beim ersten Aufruf für vertrauenswürdig einstellen.

    Wenns ner net G'wittern tun tut.

  • Bergwichtel

    Quote

    http://192.168.0.1/ bzw. bei DN: http://meinApache.lan/

    Leider führt das auch nicht zum Erfolg.


    noisefloor

    Quote

    Bzgl. HTTP erlauben: hast du den Artikel https://support.google.com/chrome/answer/…tform%3DAndroid gelesen und probiert?

    Die Seite hatte ich schon gefunden. Konnte aber nichts finden an Einstellungen für HTTPS

    hyle

    Quote

    Bei meinem FF (127.0.2) am Telefon, kann man unter "drei Punkte" >> Einstellungen >> Nur-HTTPS-Modus deaktivieren.

    Die Einstellung habe ich gefunden und die ist deaktiviert.

    durch Zufall habe ich gerade rausgefunden. Wenn ich mein Handy neu starte, dann kann ich meine Seite aufrufen. aber nur einmal nach dem Neustart. Danach geht es nicht mehr.

    Jetzt bin ich mir nicht mehr so sicher, ob ich mit meiner Vermutung richtig liege.
    Ich würde es gerne mal mit der Verschlüsselung probieren, ob es wirklich daran liegt. Dann habe ich wenigstens Ruhe. Sonst stehe ich irgendwann wieder vor das Problem.

    Nur wie ich ein Zertifikat erstellen und den Raspberry abändern muss weiß ich nicht. Denn soweit reichen meine Kentnisse nicht aus.
    Gibt es dafür eine Anleitung nach der ich mich nach richten kann?

  • Nur wie ich ein Zertifikat erstellen und den Raspberry abändern muss weiß ich nicht. Denn soweit reichen meine Kentnisse nicht aus.
    Gibt es dafür eine Anleitung nach der ich mich nach richten kann?

    Zum einen findest Du unter /usr/share/doc/apache2/ entsprechende Hinweise.

    zless /usr/share/doc/apache2/README.Debian.gz

    Eine Kurzanleitung findet sich u.a. unter https://www.server-world.info/en/note?os=Debian_12&p=httpd&f=3

    Ich habe mir ein eigenes Zertifikat erstellt, daß man im Browser einmalig erlauben muß (sogenanntes Snake Oil-Zertifikat).

    Du kannst Dir schonmal überlegen, was Du auf die Fragen antwortest:

    Code
     Country Name (2 letter code) [AU]:
     State or Province Name (full name) [Some-State]:
     Locality Name (eg, city) []:
     Organization Name (eg, company) [Internet Widgits Pty Ltd]:
     Organizational Unit Name (eg, section) []:
     Common Name (e.g. server FQDN or YOUR name) []:
     Email Address []:

    Falls Fragen aufkommen, einfach hier nochmal melden.

    Wenns ner net G'wittern tun tut.

  • Bei der E-Mail Adresse, wofür wird die Benötigt?

    Normalerweise sind in den Zertifikaten gültige Angaben.
    Wenn keine Zertifizierungsstelle im Spiel ist, kannst Du in Dein Zertifikat reinschreiben, was Du willst.
    Bei der E-Mail-Adresse auch, ich habe da allerdings eine meiner Mülladressen - man weiß ja nie.

    Und wie muss ich jetzt weiter verfahren?

    Mal schauen, ob ich die Einzelschritte zusammenbringe.

    Code
    sudo apt install ssl-cert
    
    # Speicherort der eigenen Zertifikate
    sudo mkdir -p /etc/ssl/localcerts
    # Zertifkat erstellen
    # Evtl. -days anpassen, danach wird das Zertifikat automatisch ungültig und man muß ein neues erstellen.
    sudo openssl req -new -x509 -days 365 -noenc -out /etc/ssl/localcerts/apache.pem -keyout /etc/ssl/localcerts/apache.key
    # Berechtigungen setzen
    sudo chmod 600 /etc/ssl/localcerts/apache*

    Jetzt muß der Apache konfiguriert werden.
    Hier kann man, wenn man möchte, auf Port 80 was anderes ausgeben als auf Port 443.

    Ich persönlich arbeite da mit einem kleinen Trick.

    Wenn Du unter https das selbe wie unter http ausgeben willst, einfach den Include anpassen.

    Dann natürlich noch:

    Code
    sudo apachectl configtest
    sudo service apache2 restart

    und dann checken, ob alles so klappt, wie es soll.

    Wenns ner net G'wittern tun tut.

    Edited 2 times, last by Bergwichtel: fehlende Worte ergänzt; sicherheitshalber die sudo's hinzugefügt (July 3, 2024 at 3:39 PM).

  • Mir fällt gerade noch etwas ein:

    Hast Du auf Deinem Telefon Firefox installiert (bei Chrome kenne ich mich nicht aus)?
    Ist da evtl. DNS über HTTPS aktiviert? Bzw. ist das evtl. fürs ganze Telefon aktiv?

    Anmerkung zu meinem kleinen Trick:
    Wenn Du das so machst, muß Du natürlich bei den Include-Dateien (die vorherige conf) die <VirtualHost *:$PORT> als Kommentar kennzeichnen (auch die </VirtualHost>). Funktioniert sonst nicht.

    Wenns ner net G'wittern tun tut.

  • Bergwichtel
    Bin heute erst dazu gekommen, dein Script auszuprobieren.
    Nur im 2. Code komme ich nicht weiter.Wenn ich ls -lh 010-intern* eingebe bekomme ich nur

    Code
    ls: Zugriff auf '010-intern' nicht möglich: Datei oder Verzeichnis nicht gefunden
    -rw-r--r-- 1 root root 1,3K  5. Apr 14:00 000-default.conf
    -rw-r--r-- 1 root root 6,1K  5. Apr 14:00 default-ssl.conf

    Fehlt da bei mir noch irgend ein Treiber, oder wo kann das dran liegen?

    Code
    sudo openssl req -new -x509 -days 365 -noenc -out /etc/ssl/localcerts/apache.pem -keyout /etc/ssl/localcerts/apache.key

    Seh ich das richtig, dass das Zertifikat so in einen Jahr abläuft?
    Wenn ja was muß ich ändern, das es nicht abläuft. Denn das möchte ich mir gerne ersparen.

  • Ich hatte gedacht, das Du den Befehl auf Dein System anpasst.

    Code
    ls /etc/apache2/sites-available/

    zeigt Deine verfügbaren Virtuellen Host.

    Mache zur Sicherheit von denen eine Kopie.
    Danach änderst Du bei der Konfigurationsdatei, die Du auch mit SSL betreiben willst, die Dateiendung von conf auf z.B. inc. Diese editierst Du und setzt vor Virtualhost-Tags ein #. Das ist notwendig, weil die aufrufende Konfigurationsdatei diese Angaben enthält enthalten wird. Dann erstellst Du eine Datei mit dem ursprünglichen Namen und der Dateiendung .conf an und kopierst denn Inhalt, den ich unter 'kleiner Trick' gepostet habe hinein. Danach änderst Du sie so ab, das die Include-Anweisung auf die gleiche .inc zeigt.

    Ich hoffe, ich habe es verständlich genug erklärt.

    Wenns ner net G'wittern tun tut.

  • Bergwichtel

    Leider bekomme ich es nicht hin. Irgendwo mache ich noch einen Fehler.

    Habe die Dateien entsprechend unbenannt und die 000-default.conf neu erstellt.

    Code
    -rw-r--r-- 1 root root  350  7. Jul 12:35 000-default.conf
    -rw-r--r-- 1 root root 1288  7. Jul 12:38 000-default.inc
    -rw-r--r-- 1 root root 6204  7. Jul 12:45 default-ssl.inc

    Der Inhalt von 000-default.conf

    Die Datei 000-default.inc habe ich so abgeändert:

    Die erste und letzte Zeile mit Raute versehen.
    Die default-ssl.inc habe ich auch die erste und letzte Zeile mit Raute versehen

    Wenn ich jetzt den Test sudo apachectl configtest durchführe, bekomme ich eine Fehlermeldung:

    Code
    AH00526: Syntax error on line 24 of /etc/apache2/sites-available/default-ssl.inc:
    Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
    Action 'configtest' failed.
    The Apache error log may have more information.

    Du hast oben weiter geschrieben, das ich <VirtualHost *:$Port> auch ändern mu?. Liegt es vielleicht daran?
    Nur die kann ich nirgendswo finden.

    Bei mein Handy hat sich etwas geändert. Der Brauser schreibt: ... hat die Verbindung abgelehnt. Kannst du erkennen wo bei mir noch ein Fehler liegt?

  • Ok. Jetzt weiß ich zumindest, das Du nicht weißt, wie man einen Apach2 konfiguriert.
    Ergo, nehemen es wir in den Angriff.

    Ich gehe davon aus, daß Du mit https das selbe wie mit http ausgeben möchtest. Das bedeutet, das Du im *:80 und im *:443 auf die gleiche Include-Datei verweist.
    000-default.conf:

    Quote

    Die Datei 000-default.inc habe ich so abgeändert:

    Code
    #<VirtualHost *:80>
    ...
    #</VirtualHost>

    Die erste und letzte Zeile mit Raute versehen.

    Richtig.

    Wenn ich jetzt den Test sudo apachectl configtest durchführe, bekomme ich eine Fehlermeldung:

    Code
    AH00526: Syntax error on line 24 of /etc/apache2/sites-available/default-ssl.inc:

    Die /etc/apache2/sites-available/default-ssl ist eine als Beispiel beigelegte Datei, die unbearbeitet immer crasht. Du brauchst diese Datei nicht, da wir über der neuerstellten 000-default.conf den Apachen anweisen http und https mit der angegeben include-Datei als Konfiguration zu benutzen.

    Mache mal diese Änderungen und führe den Konfigtest aus. Ich hoffe, das nur die Zeile 'OK' ausgegeben wird. Falls nicht, dann bitte die Fehlermeldung posten.


    Edit: Ich vemute, das folgende Fehlermeldung kommt:

    Code
    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
    an der apache2.conf

    Wenns ner net G'wittern tun tut.

    Edited once, last by Bergwichtel: Erwartete Fehlermeldung hinzugefügt (July 7, 2024 at 2:09 PM).

  • Um die ursprüngliche Frage nach Android zu beantworten, würde ich mal diesen artikel lesen.

    How to allow all Network connection types HTTP and HTTPS in Android (9) Pie?
    From Android 9 Pie now, requests without encryption will never work. And by default, the System will expect you to use TLS by default.You can read this feature…
    stackoverflow.com

    Berechtigungen für Website-Einstellungen ändern - Android - Google Chrome-Hilfe

    Vielleicht hilft es. Ansosten die suchmaschine deines Vertrauens befrgen.

    Meine Antwort ist 21 und nicht 42. Oder anders gesagt: 0001 0101 statt 0010 1010

  • Ich glaube, ich muß noch etwas zum Thema apache2 konfigurieren sagen, damit man meine Vorschläge versteht.

    Aus dem, was Du gepostest hast, entnehme ich, das Du den Apache2 nur installiert hast und dann Deine Seiten unter /var/www/html abgelegt hast. Mit der Installation startet der Apache automatisch.
    An den geposteten Konfigs konnte ich erkennen, das die nie auf das System angepaßt wurden.

    Der Apache2 wird unter Bookworm, welches Du verwendest, so ausgeliefert, das er bei der Konfigprüfung immer eine Fehlermeldung erzeugt, aber trotz den Fehler (was eher eine Warnung ist), startet.

    Deswegen habe ich im Edit die Fehlermeldung vorhergesagt. Leider ohne Erläuterung. Deswegen dieses Post jetzt.

    Es sind in der geposteten Konfiguration noch ein paar Fehler drin, die der Apache unter Umständen ignoriert und trotzdem startet und evtl. sich scheinbar richtig verhält.
    Diese Beseitigung habe ich aufgeschoben, bis Du diese Fehlermeldung bestätigst. Dadurch erfahre ich, das der Rest der Konfiguration höchstwahrscheinlich in Ordnung ist, und nur noch dieser Fehler in der Konfiguration beseitigt werden muß. Dazu habe ich mir vorgenommen, das in einem extra Posting zu behandeln. Du sollst schließlich verstehen, warum da was reinkommt. Allerdings muß ich da dann etwas weiter ausholen (Stichwort: Dynamic Name).

    Wenns ner net G'wittern tun tut.

  • Ja da hast du Recht. Direkt was konfiguriert habe ich im Apache2 nichts. Ich habe mir im Netz damals eine Anleitung gesucht zum installieren von Apache2 und PHP.
    Bis lang habe ich keine Probleme gehabt.

    Quote

    Ok. Jetzt weiß ich zumindest, das Du nicht weißt, wie man einen Apach2 konfiguriert.

    Das stimmt. Wenn ich um Linux geht wie hier, da habe ich leider noch meine Probleme

    Nach dem sudo service apache2 restart bekomme ich folgende Fehlermeldung:

    Code
    AH00526: Syntax error on line 11 of /etc/apache2/sites-enabled/000-default.conf:
    Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
    Action 'configtest' failed.
    The Apache error log may have more information.

    Im Internet habe ich eine ähnliche Anleitung gefunden. Die so aber auch nicht funktioniert.
    Dort wurde noch ein Befehle angegeben. Den habe ich mal testhalber ausgeführt.

    Code
    sudo a2enmod ssl

    Edit: Ich vermute, das folgende Fehlermeldung kommt:
    Nachdem ich sudo a2enmod ssl eingegeben habe, bekomme ich die Fehlermeldung.

    Code
    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
    Syntax OK
  • sudo a2enmod ssl

    Das habe ich doch glatt vergessen zu schreiben. Entschuldigung.

    Noch etwas, falls Du es irgendwann mal brauchst:

    Code
    ls -d1 /etc/apache2/*available
    /etc/apache2/conf-available
    /etc/apache2/mods-available
    /etc/apache2/sites-available

    In diesen Verzeichnissen liegen die Konfigurationsdateien für die virtuellen Server (sites-available), für die Apache2-Module (mods-available), für spezielle Konfigurationen (conf-available).

    Wenn Du sehen willst, welche aktiviert wurden, schaust Du in die Verzeichnisse von:

    Code
    $ ls -d1 /etc/apache2/*-enabled
    /etc/apache2/conf-enabled
    /etc/apache2/mods-enabled
    /etc/apache2/sites-enabled

    Aktivieren mit a2enconf a2enmod a2ensite, deaktivieren mit a2disconf a2dismod a2dissite. (Als root oder mit sudo).


    Der Apache2 ist von hausaus auf virtuelle Hosts eingerichtet, das bedeutet, er liefert entsprechend des aufgerufenen Domainnamen (DN) aus. Kommen anfragen auf den Ports rein, auf denen er hört, wertet er den DN aus und liefert nach der entsprechenden Konfiguration aus. Dadurch kann man die verschiedensten Domains und Subdomains von dem Apachen bedienen lassen.

    Code
    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

    Für 127.0.0.1 benötigt er Rechnername + Domain. Deinen Rechnernamen erhältst Du durch Aufruf des Befehls
    hostname oder durch cat /etc/hostname. Domain bei 127.0.0.1 ist localhost.
    Jetzt editierst Du die /etc/apache2/apache2.conf und fügst ans Ende der Datei

    Code
    ServerName xxx.localhost

    Die xxx ersetzt Du durch Deinen Hostname.
    Damit ist die Fehlermeldung mit "using 127.0.1.1" weg.

    Jetzt noch die Sites-Konfigurationen. Du hast vermutlich nur die 000-default.conf. Die wird immer aufgerufen, wenn es keine passende Domainnamen-Konfiguration gibt.

    Hier müssen noch die ServerName's, und evtl. Aliase eingetragen werden. Die braucht Apache, um nach der richtigen Konfiguration auszuliefern.

    Nehmen wir an, du rufst den Webserver mit http://mein.webserver.lan auf, dann muß das in der Konfigurationsdatei drin stehen. Er kann auch mehrere Namen haben. Z.B. falls er übers Internet erreichbar ist, wird diese Adresse als Alias angegeben:

    Code
    # <VirtualHost *:80> ## Datei als include
           ServerName mein.webserver.lan
           ServerAlias mein.dyndns.org

    Die Angaben mußt Du natürlich an Deiner Umgebung anpassen.

    Du kannst damit mehrere getrennte Webspaces von den Apachen verwalten lassen.
    Ich habe z.B. eine Reihe Webseiten als Subdomains eingerichtet. Jede hat ihre eigene Konfigurationsdatei(en) und ist darüber ansprechbar. Aber nur über den Namen, wenn man den Webserver mit der IP anspricht, bekommt man nur die default-Seite (000-default) angezeigt. Da bedeutet, da natürlich ein DNS im Netz definiert sein muß, der die Subdomain als CNAME auflösen kann.

    So, jetzt sollte er ohne Fehlermeldung beim Konfigtest auskommen und rund laufen.

    Wenns ner net G'wittern tun tut.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!