PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linux & Docker



HansFaste
02.07.20, 15:00
Hallo werte Regenschaft,

hat einer der hier anwesenden Regent Ahnung von Docker auf einem Linux Ubuntu 18.04?

Zum Hintergrund:
Wir wollen / müssen eine Alexa Skill inHouse hosten. Der Skill kommt vom Dienstleister und muss auf Docker laufen. Die Docker Container laufen auch soweit, jedoch klappt der Aufruf des Skills nur mit http, aber nicht mit https.
Ich hab auf dem selben System nen Apache aufgesetzt, die Index Seite vom Apache lässt sich per https aufrufen.
Evtl. hat einer der Regenten ja einen hilfreichen Tipp.

Garfield
02.07.20, 15:38
Heißt "auf dem selben System" im selben Docker Container?

Wir sind zwar Entwickler, aber kein Docker Spezialist.

Ist das ein frei verfügbares Docker Image oder gibt das euer Dienstleister nur kommerziell raus?

HansFaste
02.07.20, 15:49
Der Apache läuft auf dem gleichen Linux Host, nicht im Docker Container.
Das Docker Image kommt vom Dienstleister, liegt aber in unserem private Repository

Garfield
02.07.20, 16:30
Ähhhhh https: na klar!

Das Zertifikat kann doch gar nicht von der Alexa akzeptiert werden oder? Beim Apache musstet ihr doch locker ne Zertifikatswarnung wegklicken weil das nen self-signed Zertifikat war oder?

Nachtrag: Es wäre meine Annahme dass eine Alexa nicht einfach blind jedes Zertifikat für ne HTTPS Verbindung akzeptiert sondern nur was bei der Alexa selbst mit einem vertrauten Zertifikat abgesichert ist.

JoeMill
02.07.20, 20:55
Wie startet Ihr denn den Container per docker-compose oder "einfach" nur per docker run?

Und ist der https-Port vom Container denn überhaupt gepublisht? Sowas ala "docker run -p 8443:443" (damit der Port 443 aus dem Container auf Port 8443 des Host erreichbar ist?)

HansFaste
03.07.20, 07:50
@Garfield Das Zertifikat ist nen Wildcard Zertifikat. Wie das mit den Zertifikaten im Container selbst bzw. in der Alexa abläuft kann ich, stand jetzt, nicht beurteilen.

@JoeMill Die Container (Applikation + DB) werden über Compose gestartet. Die Kommunikation mit der Applikation läuft über Port 1245, in der Compose Datei steht demnach: Ports: - "1245:1245"
Würde es dann Sinn machen den Port 1245 auf 443 erreichbar zu machen? Also "443:1245"?

Garfield
03.07.20, 09:36
Wie ist das denn mit dem HTTP Port geregelt, wo liegt der denn?

Und was genau läuft über Port 1245? Kommunikation der Applikation mit was?

HansFaste
03.07.20, 09:55
Warum die Abfrage über HTTP läuft ist mir auch ein wenig schleierhaft. Die Abfrage von intern sowie von extern über HTTP laufen und die Abfragen über HTTPS nicht, egal ob intern oder extern.
Die Applikation im Docker Container wird über Port 1245 angesprochen.

JoeMill
03.07.20, 17:10
Kommt halt drauf ob auf dem Port 1245 überhaupt SSL/TLS gesprochen wird. Wenn da nur http ohne SSL/TLS dahinter liegt bringt das ja nichts. Jedenfalls in der docker-compose.yml ist die Angabe "<host_port>:<container_port>", die Container untereinander sprechen über den Container-Port und vom Host aus, erreicht man den Dienst über den Host-Port.

Zur Not halt einen Reverse-Proxy (nginx, apache, haproxy, etc.) auf dem HOST aufsetzen der die Anfragen an https://<host>:443 an http://<host>:1245 durchschleift.


Was spuckt denn zum Beispiel curl aus, wenn man per "curl -vvv https://<host>:1245" eine Abfrage startet?

HansFaste
06.07.20, 13:03
Das kommt bei ner Curl Abfrage direkt vom Host:
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number

JoeMill
06.07.20, 17:38
Klingt so als ob der Server im Container kein SSL spricht. Wenn man das nicht konfigurieren kann, dann hilft nur der Reverse Proxy auf dem Host-Rechner.

Garfield
06.07.20, 18:10
Klingt so als ob der Server im Container kein SSL spricht. Wenn man das nicht konfigurieren kann, dann hilft nur der Reverse Proxy auf dem Host-Rechner.

Ist das kein SSL oder nur kein ordentliches SSL? Kunden / Dienstleister lassen SSL Zertifikate gern mal ablaufen oder konfigurieren die seltsam.

JoeMill
06.07.20, 21:02
Der Fehler kann kommen, wenn der Proxy für curl falsch konfiguriert ist oder aber auch wenn curl das SSL/TLS nicht versteht was da vom Server zurück kommt. Wenn aber beim Aufruf von http://localhost:1245 eine verständliche Antwort vom Server kommt, dann spricht der kein SSL/TLS auf dem Port.

Bleibt jetzt also die Frage, gibt es da noch einen anderen öffentlichen Port am Container oder kann man am Container noch was umkonfigurieren. Ansonsten halt Reverse Proxy auf dem Host nutzen.

HansFaste
07.07.20, 08:23
Falls sich einer der werten Regenten mit dem Aufbau von Container auskennt kann ich den aktuellen Applikations-Container gerne posten. Ich selbst musste mir das Thema (+ ungeliebtes Linux) frisch aneignen und bin da nicht wirklich firm.
Ich habe den Linux Host jetzt erstmal platt gemacht und fange nochmal von vorne an (root konnte nicht auf openssl zugreifen und der Apache wollte kein TSL 1.3 aktivieren)

Edit: Kurzes Update, Server neu aufgesetzt, Docker + Apache installiert, zertifiziert über Let's Encrypt. Von der Erreichbarkeit und den Protokollen sieht es jetzt gut aus. Ich teste es nachher mal mit den Containern.