kaloschke
Goto Top

Problem mit selbstsignierten Zertifikaten für Apache

Hallo,
ich habe auf einem RPI4 den Apache2 installiert und nach dieser oder dieser oder anderen Anleitungen versucht, ein selbstsigniertes Zertifikat für Https-Verbindungen zu erstellen.
Ein Neustart des Apache mit sudo systemctl restart apache2 scheitert jedoch.
sudo systemctl status apache2.service zeigt:
Jul 02 15:29:36 RPI-OPENHAB systemd[1]: Starting The Apache HTTP Server...
Jul 02 15:29:36 RPI-OPENHAB apachectl[4102]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:443
Jul 02 15:29:36 RPI-OPENHAB apachectl[4102]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:443
Jul 02 15:29:36 RPI-OPENHAB apachectl[4102]: no listening sockets available, shutting down
Jul 02 15:29:36 RPI-OPENHAB apachectl[4102]: AH00015: Unable to open logs
Jul 02 15:29:36 RPI-OPENHAB apachectl[4102]: Action 'start' failed.  
Jul 02 15:29:36 RPI-OPENHAB apachectl[4102]: The Apache error log may have more information.
Jul 02 15:29:36 RPI-OPENHAB systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE
Jul 02 15:29:36 RPI-OPENHAB systemd[1]: apache2.service: Failed with result 'exit-code'.  
Jul 02 15:29:36 RPI-OPENHAB systemd[1]: Failed to start The Apache HTTP Server.

Es liegt also ein Problem mit Port 443 vor. Ich habe dann in meiner Standard port.conf ...
Listen 80

<IfModule ssl_module>
#        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
 #      Listen 443
</IfModule>

... die Listen 443 auskommentiert. Dann startet der Apache.

ABER: Wenn ich meine https-Seite aufrufe, erscheint lediglich, dass die Seite nicht erreichbar ist (Firefox:PR_END_OF_FILE_ERROR und Chrome und Edge:ERR_CONNECTION_CLOSED),
nicht aber, dass das Zertifikat unsicher ist, wie es doch zu erwarten ist. Ich kann also auch keine Ausnahme hinzufügen.

Habe nun schon viel probiert, lande aber immer an der gleichen Stelle.
Hat jemand einen Tipp?

Content-ID: 583999

Url: https://administrator.de/contentid/583999

Ausgedruckt am: 26.11.2024 um 14:11 Uhr

erikro
erikro 02.07.2020 um 15:59:27 Uhr
Goto Top
Moin,

netstat -an | grep "LISTEN" | grep "443"  

Der Port ist schon belegt und kann deshalb nicht vom Indianer benutzt werden. Du musst herausfinden, was da läuft und es abschalten.

hth

Erik
kaloschke
kaloschke 02.07.2020 um 16:27:23 Uhr
Goto Top
Ich habe ja noch die Datei default-ssl-conf in /etc/apache2/sites-available, in der der Port belégt wird. Ich dachte, das stört sich mit der ports.conf.
Netstat zeigt:
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN
tcp6       0      0 :::8443                 :::*                    LISTEN
144144
144144 02.07.2020 um 17:41:22 Uhr
Goto Top
Zitat von @kaloschke:
... die Listen 443 auskommentiert. Dann startet der Apache.
Ja klar, weil er jetzt ja nicht mehr auf Port 443 lauschen soll.

ABER: Wenn ich meine https-Seite aufrufe, erscheint lediglich, dass die Seite nicht erreichbar ist (Firefox:PR_END_OF_FILE_ERROR und Chrome und Edge:ERR_CONNECTION_CLOSED),
nicht aber, dass das Zertifikat unsicher ist, wie es doch zu erwarten ist. Ich kann also auch keine Ausnahme hinzufügen.
Logisch, auf Port 80 werden auch keine Zertifikate ausgeliefert.

Habe nun schon viel probiert, lande aber immer an der gleichen Stelle.
Hat jemand einen Tipp?
Wie gesagt, rausfinden, was da auf 443 lauscht und de-conflicten. Alternativ einen anderen Port nehmen.

:wq
kaloschke
kaloschke 02.07.2020 um 18:47:01 Uhr
Goto Top
Komm jetzt nicht ganz mit.
nmap localhost zeigt:
80/tcp   open  http
443/tcp  open  https
Auf 443 läuft doch also https (und auf 80 http).
Also sollte doch alles gut sein oder?

Tut mir leid, wenn ich etwas grundsätzlich nicht mitbekomme, aber ich bin nicht so der Linux-Held
144144
Lösung 144144 02.07.2020 um 19:57:58 Uhr
Goto Top
Logisch lauscht etwas auf 443, deshalb kann ja der Apache diesen Port nicht für sich beanspruchen. Nmap ist hier das falsche Tool.

sudo ss -tulpn
Damit siehst du, welcher Dienst da schon läuft.
erikro
Lösung erikro 03.07.2020 um 10:41:22 Uhr
Goto Top
Moin,

Zitat von @kaloschke:
> 80/tcp   open  http
> 443/tcp  open  https
> 
Auf 443 läuft doch also https (und auf 80 http).

Ja, aber wer lauscht da auf 443. Der Port ist beim Start des Indianers schon belegt. Deshalb startet er nicht. Mache mal Folgendes:

fuser -n tcp 443

Das Ergebnis sieht in etwa so aus:

443/tcp: 12345

Interessant ist die 12345. Das ist die Prozess-ID. Mit der finden wir heraus, welcher Prozess das ist:

ps aux | grep 12345

Am Ende der Zeile steht dann der Pfad auf den Aufruf, der den Port belegt.

hth

Erik
144144
Lösung 144144 03.07.2020 um 10:48:16 Uhr
Goto Top
Jetzt hast du bereits drei Wege genannt bekommen, wie man herausbekommt, welcher Dienst da Schuld ist.
Wenn du weiter Hilfe benötigst, bring bitte den Output von mindestens einem davon, ansonsten müssen wir die Glaskugeln rausholen.