Wie kann ich ein SSL Zertifikat auf einem Apache2 Server aktivieren (Docker)?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Was sagen den die Log Files ?

Stimmen die ganzen anderen Pfade ?

Ist das ein Home Server ?

Vitodog 
Fragesteller
 30.05.2021, 09:39

Sorry für die späte Antwort:
Das Problem, was mir auch ein bischen peinlich ist: Ich weiß nicht mal, ob logfiles erstellt werden, da ich mich mit Docker wirklich kaum auskenne, es aber nutzen muss.
Auf meinem Test-Server, welchen ich ohne Docker laufen lasse, funktioniert auch alles fein. Auf dem Docker-Webserver und dem Test-Server benutze ich die selbe config Datei ( die oben kann abweichen, da ich schon viele Tutorials durch habe und etwas rumgespielt hatte ). Wenn ich jedoch den Test-Server 1:1 rüber kopiere, funktioniert es nicht. Natürlich muss ich vorher noch über die docker-compose.yml die Dateien an den richtigen Ort verschieben.

Ich weiß leider nicht wie du das mit den Pfaden meinst. Aber was ich sagen kann, ist dass der Pfad "sites-available" bei mir nicht existiert. Die einzigen Dateien in "/etc/apache2/" sind "conf-available/ mods-available/", wobei ich auch nicht weiß, wie Docker das regelt, da ich wie gesagt nicht sehr vertraut damit bin.
Ansonsten sollten alle Pfade auch richtig zugewießen sein. Ein Anhaltspunkt könnte sein, dass die Dateien von letsencrypt nur über den root user geöffnet/eingesehen werden können. Jedoch sehe ich, wenn der Server startet, keine Fehlermeldung

Und ja, es ist ein Home-Server

Schonmal danke im Vorraus

0
TechPech1984  30.05.2021, 09:51
@Vitodog

12.1. Ein Container starten

Anstatt wie beim hello-world Beispiel nach dem Start als Container gleich wieder zu enden, können wir auch ein interaktiven Shell Zugriff auf den Container erlangen. Dies machen wir mit den Argumenten „- i“ und „-t“. diese kann man zusammenfassen zu „-it“.

mng01@mng01:~$ docker run –it ubuntu

12.2. In einem Container arbeiten

Nach dem Start ändert sich unsere Kommandozeileneingabe in die root Eingabe innerhalb des Containers.

root@9f586c1a5b6f:/#

dort kannst du dir die logfiles angucken , ggf kannst du die log files auch auf dein host pfad mappen .

0
Vitodog 
Fragesteller
 30.05.2021, 10:31
@TechPech1984

Ich bin schonmal einen Schritt weiter. Deine Methode hatte mir leider nicht so viel geholfen, da ich es über eine docker-compose file / mit docker-compose up starte. Jedoch hattest du mich auf die Idee gebracht Commands in dem Docker Container auszuführen (mit docker exec -it) Dabei habe ich gemerkt, dass garkein sudo ausgeführt werden kann

exec: \"sudo\": executable file not found in $PATH": unknown

Jetzt habe ich alle sudos entfernt und ich bin einen Schritt weiter.

WICHTIG: AB HIER HABE ICH NOCH NICHT RECHERSCHIERT UND WILL NUR DEN AKTUELLEN STAND WIEDERSPIEGELN

Jetzt bin ich bei

SSL_ERROR_RX_RECORD_TOO_LONG

Ich schaue mal und falls ich was finde / nichts finde melde ich mich nochmal. Bis jetzt abver schonmal danke!

0
Vitodog 
Fragesteller
 30.05.2021, 10:52
@TechPech1984

Sooo und ich bin einen Schritt weiter. Meine Zertifikate wurde nicht importiert. Habe ich schnell behoben. Jetzt kommt dieser Fehler: "PR_END_OF_FILE_ERROR" auch hier gilt. Ich habe noch nicht nach gegoogelt. Werde ich jetzt schnell machen.
Und danke für dein aktives Mitwirken

1
Vitodog 
Fragesteller
 30.05.2021, 11:23
@TechPech1984

DANKE DIR. Du hast mir bestimmt Stunden von Arbeit abgenommen. Aber noch eine klitze kleine Frage: Wie funktionieren diese Dockerfiles jetzt ? Wenn ich über docker exec -it mache, funktioniert es. Am besten soll es aber automatisch ablaufen. Aber irgendwie klappt es nicht... Meine Docker-File:

FROM php:7.3.3-apache

RUN a2enmod ssl
RUN mkdir /etc/apache2/ssl

RUN cp "/etc/letsencrypt/live/MYIP/fullchain.pem" "/etc/apache2/ssl/fullchain.pem"
RUN cp "/etc/letsencrypt/live/MYIP/privkey.pem" "/etc/apache2/ssl/privkey.pem"

RUN cp "/home/pi/web_dev/default-ssl.conf" "/etc/apache2/sites-available/default-ssl.conf"

RUN a2ensite default-ssl.conf

RUN apt-get update && apt-get upgrade -y
RUN docker-php-ext-install mysqli
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
ADD php.ini /home/pi/web_dev
EXPOSE 80
EXPOSE 443 https
0
TechPech1984  30.05.2021, 11:26
@Vitodog

was hst du den eigentlich geändert ? du kannst dir auch das image nach änderung wieder speichern als neues image , dann brauchste auch nicht dieses RUN a2enmod ssl und das ganze kopieren .

1
Vitodog 
Fragesteller
 30.05.2021, 11:27
@TechPech1984

Ich hatte noch eine "korrupte" Zeile in meiner default-ssl.conf gehabt. die hat dann den Webserver beendet, als man versucht hat, die Config mit

a2ensite default-ssl.conf

zu ändern

0
TechPech1984  30.05.2021, 11:29
@TechPech1984

13. Container und Image und Docker Hub

13.1. Änderungen im Container in einem Image speichern

Solange wir den ubuntu Container noch nicht entfernt haben, können wir die Änderung (mit der nodejs Installation) in unserem lokalem Repository speichern.

definiert die Info für den Speichervorgang. definiert den Autoren Namen

die Container ID

–m -a

container_id

repository/new_image_name                 docker hub login/neuer Image Name mng01@mng01:~$ docker commit -m "Was wurde geändert" -a "Author Name" \

container_id \ repository/new_image_name

Ein Beispiel mit dem Docker Hub Login mustermann und der Container ID 898989898 mng01@mng01:~$ docker commit -m "installiertes NodeJs" -a "Max Mustermann" \

898989898\

mustermann /Ubuntu-nodejs

Das Image wird erstmal in dem Lokalen Repository gespeichert. Wir können uns das Ergebnis anzeigen lassen mit

mng01@mng01:~$ docker images

13.2. Images in die Docker Hub Registry hochladen

Um das Image nun in die Docker Hub Registry hochzuladen müssen wir uns erstmal einloggen. mng01@mng01:~$ docker login –u dockerhub-registry-benutzername

Nach Eingabe des Passwortes sind wir beim Docker Hub angemeldet. Wir können nun mit dem Kommando „push“ unser Image auf den Docker Hub hochladen.

mng01@mng01:~$ docker push dockerhub-registry-benutzername/docker-image-name Beim Beispiel von Max Mustermann sieht der Befehl so aus.

mng01@mng01:~$ docker push mustermann/Ubuntu-nodejs

Nach dem Upload zum Docker Hub kann man auf der Docker Hub Webseite den Erfolg bestaunen. Bei Fehlern sollte man noch einmal den Login schritt mit korrekten Anmeldedaten wiederholen. Das hochgeladene Image kann dann auf anderen Rechnern mit einem „pull“ Befehl wieder genutzt werden.

Beispiel: Herunterladen des Images von Max Mustermann mng01@mng01:~$ docker pull mustermann/Ubuntu-nodejs

1
TechPech1984  30.05.2021, 12:26
@Vitodog

ich glaub du musst auch nach dem ganzen kram nochmal dein apache2 neu starten/ bzw configs neu laden , da du ja änderungen vorgenommen hast .

0

Vorab, ohne Logs kann man da nur sehr schwer etwas zu sagen.

Die folgenden beiden Zeilen halte ich auf den ersten Blick für fragwürdig:

SSLCertificateChainFile "path to fullchain.pem"
SSLCertificateKeyFile "path to privkey.pem"

Die würden richtig, eigentlich erstmal so aussehen:

SSLCertificateFile /path/to/fullchain.pem
SSLCertificateKeyFile /path/to/privkey.pem

'SSLCertificateChainFile' ist mindestens veraltet und hier sicher nicht korrekt.

Desweiteren ist mir nach dem von dir geposteten:

/etc/apache2/sites-available/000-default.conf

unklar, ob die Konfiguration auch in

/etc/apache2/sites-enabled/000-default.conf

verfügbar ist, also 'a2ensite' darauf ausgeführt wurde, bzw. ein Symlink besteht.

Benutzt Du die gleiche Konfigurations-Datei für http und https (SSL)?

Was das Zusammenspiel Docker/Apache angeht, kannst Du deine Konfiguration auch nochmal mit diesem Howto abgleichen:

https://codeburst.io/http-server-on-docker-with-https-7b5468f72874

Woher ich das weiß:Berufserfahrung