- “Hey, warte mal, darueber hast du doch schon geschrieben, oder?”
Fast, aber nicht ganz. Das letzte Mal habe ich ueber die Verwendung von SFTP geschrieben (siehe [[2021-08-12 Using a Local SFTP-Server for Testing | ueber die Verwendung von SFTP]]). Dieses Mal geht es um FTPS.
- “Also, was ist der Unterschied?”
Einfach ausgedrueckt: FTPS ist das Gleiche wie FTP, aber mit einer zusaetzlichen TLS-Schicht, waehrend SFTP ein separates Protokoll ist, das auf SSH basiert.
Dieser Artikel wird nicht tiefer in die Erklaerung des Unterschieds einsteigen - es gibt viele gute Erklaerungen anderswo.
Lass uns loslegen.
Drei Verzeichnisse werden benoetigt:
/Users/youruser/ftps/data: Das Verzeichnis, in dem alle Daten fuer das Hoch- und Herunterladen von Dateien gespeichert werden./Users/youruser/ftps/passwd: Ein Verzeichnis, das die Passwortdatei des Servers enthaelt./Users/youruser/ftps/ssl: Das Verzeichnis, in dem alle TLS-spezifischen Dateien gespeichert werden.
Die letzten beiden sind nicht unbedingt notwendig, aber ihre Verwendung macht die Dinge etwas schneller.
TLS-Zertifikate werden automatisch erstellt, wenn sie nicht existieren. Durch das Mapping des Zertifikatverzeichnisses auf ein Host-Verzeichnis werden die Zertifikate nicht regeneriert, wenn eine neue Container-Instanz startet.
Du kannst natuerlich auch deine eigenen Zertifikate in dieses Verzeichnis legen.
Stelle sicher, dass Docker die Berechtigung hat, diese Verzeichnisse zu mappen und zu beschreiben. Ich verwende Docker Desktop fuer Mac und kann die Verzeichnisse in den Einstellungen hinzufuegen.

Dieses Mal habe ich die gesamte Konfiguration in eine praktische docker-compose.yml gepackt:
version: '3'
services:
ftps:
image: stilliard/pure-ftpd
container_name: ftps
ports:
- "21:21"
- "30000-30009:30000-30009"
volumes:
- "/Users/youruser/ftps/data:/home/foo/"
- "/Users/youruser/ftps/passwd:/etc/pure-ftpd/passwd"
- "/Users/youruser/ftps/ssl:/etc/ssl/private/"
environment:
PUBLICHOST: "localhost"
FTP_USER_NAME: foo
FTP_USER_PASS: pass
FTP_USER_HOME: /home/foo
ADDED_FLAGS: "--tls=2"
TLS_CN: "localhost"
TLS_ORG: "YourOrg"
TLS_C: "DE"
Wie ueblich starten wir es mit docker-compose up -d und pruefen die Logs, um sicherzustellen, dass alles korrekt startet, mit docker-compose logs -f.
Zum Testen verwende ich Cyberduck.
Nach dem Starten von Cyberduck erstelle eine neue Verbindung.

Jetzt sind wir bereit zum Verbinden.

Beim Verbinden erscheint eine Meldung, dass die Zertifikatvertrauensueberpruefung fehlgeschlagen ist. Das ist in Ordnung: Fuer Tests wurde das Zertifikat lokal generiert, nicht von einer offiziellen Behoerde.

Vor dem Test habe ich zwei Dateien im Verzeichnis /Users/youruser/ftps/data erstellt, die nach dem Verbinden sichtbar sind.

Doppelklicke auf eine Datei, um sie herunterzuladen. Die Zertifikatvertrauenswarnung erscheint erneut, was erwartet wird.

Eine letzte Meldung erscheint nach dem Download, und damit ist dieser Beitrag abgeschlossen.

Danke fuers Lesen. Ich hoffe, es hat geholfen!
Gerne kannst du mir einen Kaffee kaufen, wenn dir dieser Beitrag gefallen hat.