Übersicht
Die Anbindung an das File-Archiv über die SFTP Schnittstelle wird durch zwei Microservices realisiert, dem archive-writer und dem archive-searcher.
Vorbedingungen SFTP Anbindung
Um eine gesicherte Datenübertragung zu ermöglichen ist es nötig, das SSH-Protokol zu nutzen.
Dafür müssen zusätzliche Konfigurationen für den archive-writer
und archive-searcher
gemacht werden.
Sowohl der Client als auch der SFTP-Server benötigen einen privaten und öffentlichen SSH-Schlüssel.
Diese werden ausgetauscht, damit der Server den Client erkennt und andersherum.
Folgende Dateien sind zu erstellen:
- known_hosts
- enthält die IP des SFTP-Servers mit seinem PublicKey
- Publickey wird z.B. bei RebexTinySftpServer automatisch erstellt und muss nur aus dessen Verzeichnis gelesen werden
- Format:
<IP-Adresse> <Verschlüssungstyp> <PublicKey des SFTP-Servers>
- Public Key des Clients
- Name der Datei:
${SFTP_PRIVATE_KEY_FILE_NAME}.pub
- Format: OpenSSH
- Name der Datei:
- Private Key des Clients
- Name der Datei:
${SFTP_PRIVATE_KEY_FILE_NAME}
- Format: OpenSSH
- Name der Datei:
Diese Dateien müssen in den Ordner /home/.ssh/
des jeweiligen Containers gemountet werden.
Konfiguration des SFTP-Server
Neben der Erstellung des Private- und PublicKeys wird es ggf. notwendig sein, eine authorized_keys
-Datei hinzuzufügen.
Diese enthält den PublicKey der Clients - NICHT den Key des Servers. Bei mehreren Clients wird ein ClientKey pro Zeile erfasst:
- im OpenSSH-Format:
<Verschlüssungstyp> <PublicKey des Clients> <Kommentar (optional>
Bei Bedarf: Generierung eines Keys
Unter Windows wird üblicherweise ein SSH-Key mithilfe des Tools PuTTYGen erstellt.
Um ein Key zu generieren muss man lediglich das Tool starten, auf Generate
klicken und mit der Maus Bewegungen erzeugen.
Um den PrivateKey im richtigen Format zu speichern, klickt man auf Conversions > Export OpenSSH Key
und speichert diese ohne jegliche Dateiendung ab.
Für den PublicKey muss im oberen Teil des Fensters der Text herauskopiert werden und in eine neue Datei mit dem Namen des PrivateKeys und der Endung .pub
kopiert werden.
Falls ein SSH-Key mit der Endung .ppk
schon vorhanden ist, handelt es sich hierbei um ein Dateiformat von PuTTYGen.
PuTTYGen kann diesen Key laden und, wie vorher beschrieben, in das OpenSSH-Format umwandeln.
Archiv-Writer
Der Microservice konsumiert die Nachrichten aus der Persistence Queue und archiviert die Nachrichten und sendet die Nachrichten zum Indizieren in die Index Queue.
Die Konfiguration des Microservices geschieht über die im “docker-compose”-Datei angegebene “application.yml”.
Releases
Der Service wird in den folgenden Versionen als Docker Container aus dem Repo docker-nob-erp.next-level-apps.com/archive-writer
bereitgestellt.
2021-06-28
Ticket | Beschreibung |
---|---|
BTOB-7497 | Initiale Entwicklung zur File-System Archivierung via SFTP |
Konfiguration
Für die Konfiguration der Placeholder siehe Installation.
consumer-queue: persistence_queue
production-queue:
index: index_queue
error: error_queue
default-suffix: .txt
writer:
file-ending: .json
sftp:
host: ${SFTP_HOST}
port: ${SFTP_PORT}
user: ${SFTP_USER}
password: ${SFTP_PASSWORD}
private-key-file-name: ${SFTP_PRIVATE_KEY_FILE_NAME}
remote-directory: ${SFTP_REMOTE_DIRECTORY}
spring:
rabbitmq:
host: ${RABBITMQ_HOST}
port: ${RABBITMQ_PORT}
username: ${RABBITMQ_USER}
password: ${RABBITMQ_PASSWORD}
Archiv-Searcher
Funktion
Der Microservice nimmt Anfragen von der B2B zum Suchen der Nachrichten-Details/Dateien aus dem Archiv entgegen und lädt diese per Archiv-Datei-Id aus dem Archiv.
Releases
Der Service wird in den folgenden Versionen als Docker Container aus dem Repo docker-nob-erp.next-level-apps.com/archive-searcher
bereitgestellt.
2021-06-28
Ticket | Beschreibung |
---|---|
BTOB-7513 | Initiale Entwicklung zur Suche im File-System Archivierung via SFTP |
Konfiguration
Für die Konfiguration der Placeholder siehe Installation.
sftp:
host: ${SFTP_HOST}
port: ${SFTP_PORT}
user: ${SFTP_USER}
password: ${SFTP_PASSWORD}
private-key-file-name: ${SFTP_PRIVATE_KEY_FILE_NAME}
remote-directory: ${SFTP_DIRECTORY}
reader:
file-ending: .json