SFTP-Zugang mittels externem SSL Zertifikat

moby07

Lieutenant
Registriert
Sep. 2007
Beiträge
899
Hallo zusammen,

es gibt einen SFTP-Zugang bei der Firma B. Firma A soll den Zugriff erhalten. Meiner Meinung nach Muss Firma B ein SSL-Zertifikat ausstellen und das public an Firma A senden bzw. bei sich auf dem Server hinterlegen.
Gibt es einen Weg oder ist es einfach Unsinn dass Firma A ein SSL-Zertifikat ausstellt und Firma B hinterlegt es bei sich auf dem Server?
Welche Möglichkeiten gibt es?

Viele Grüße
moby07
 
Der häufige Fehler
Die Abkürzung SFTP wird häufig (auf falsche Weise) verwendet, um "Secure FTP" zu beschreiben, was es de facto jedoch gar nicht ist.
Ein ähnlicher Fehler ist, dass der Begriff SFTP häufig als "FTP over SSL" verwendet wird, was ebenfalls in diesem Zusammenhang nicht korrekt ist. "FTP over SSL" ist FTPS!

Was SFTP und FTPS gemeinsam haben
Doch, so unterschiedlich beide Protokolle sind, gibt es auch Gemeinsamkeiten. FTPS und SFTP verwenden beide eine Kombination aus asymmetrischen Algorithmen (RSA und DSA um genau zu sein), einem symmetrischen Algorithmus (DES/TrippleDES (3DES), AES, etc.) sowie einem Schlüssel-Austausch Algorithmus. Für die Authentifizierung benutzt FTPS beziehungsweise dessen SSL/TLS Protokoll jedoch so genannte "x.509 Zertifikate", wohingegen SFTP durch das "SSH Protokoll" entsprechende Schlüssel verwendet.

Der Unterschied zwischen x.509 und SSH
X.509 Zertifikate beinhalten einen Public Key und Informationen über den Besitzer des Zertifikats. Durch diese Information kann die andere Seite prüfen, ob das Zertifikat und die Daten des Zertifikatbesitzers korrekt sind. Diese Prüfung kann sowohl von einem Computer als auch von einem Menschen durchgeführt werden. Ein x.509 Zertifikat hat einen zugehörigen Private Key, der aus Sicherheitsgründen üblicherweise separat vom Zertifikat aufbewahrt wird.
Ein SSH Schlüssel beinhaltet einen Public Key (der dazugehörige Private Key wird separat gespeichert) und beinhaltet keine Informationen über dessen Besitzer. Auch Informationen für eine Validierung sind nicht vorhanden, da nur der Public Key genutzt wird, wodurch die Authentifizierung natürlich unvollständig ist und gleich wie die übliche SSH Schlüssel Authentifizierung ist.

Das wichtigste aus dieser Quelle:
FTPS erfordert nur dann händisches Eingreifen wenn das X.509-Zertifikat nicht von einer im System als vertrauenswürdigen CA zertifiziert ist. Andernfalls verhält es sich genauso unauffällig wie HTTPS, da dem Zertifikat und damit dem Schlüssel in einer chain of trust vertraut wird.

SFTP dagegen ist entweder Teil oder eine Erweiterung des SSH-Protokolls. In jedem Fall verhält es sich in Authentifizierung in der Regel wie SSH:

Der Server identifiziert sich dem Client gegenüber mit einem RSA-, DSA- oder ECDSA-Zertifikat, wodurch Manipulationen im Netzwerk erkannt werden können (kein anderer kann sich als ein bekannter Server ausgeben).
Der Client kann sich unter anderem per Public-Key-Authentifizierung mit einem privaten Schlüssel, dessen öffentlicher Schlüssel auf dem Server hinterlegt ist, oder einem gewöhnlichen Kennwort authentisieren.

Auf welchem Port lauscht denn der Server?
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Hayda Ministral
Um es kurz zu machen:
SFTP = SSH File Transfer Protokoll
Hier ist SSL nicht möglich. Da kannst du aber mit RSA Schlüsseln arbeiten. SFTP ist im Grunde direkt in SSH implementiert

FTPS = File Transfer Protokoll with SSL
Ist im Grunde klassisches FTP welches mit SSL aufgemotzt wurde
 
Der eigene Server hat immer den privaten Key. Diejenige, die dem Server trauen sollen, kriegen den öffentlichen.

Ob das ssl ist oder ssh ist wumpe und wie die den pubkey kriegen auch. Und wenn es auf Diskette war.
 
  • Gefällt mir
Reaktionen: rocketworm
Für SFTP generiert sich Firma A ein SSH Schlüsselpaar und schickt den öffentlichen Schlüssel an Firma B. Die hinterlegt den und muss Firma A dann nur noch einen Benutzernamen mitteilen, damit der Login funktioniert. Zusätzlich oder alternativ geht das natürlich auch klassisch per Benutzername+Passwort. Zusätzlich erhält Firma A von Firma B den Host Key Fingerprint, damit Firma A sicher sein kann, sich mit dem richtigen Server zu verbinden.

Für FTPS, sofern die Authentifizierung per Clientzertifikat abgesichert sein soll, erstellt Firma A ein Schlüsselpaar und ein CSR (Certificate Signing Request) und schickt diesen CSR an Firma B. Firma B signiert den CSR mit ihrem passenden privaten Schlüssel und schickt Firma A den signierten CSR zurück, der damit zum funktionierenden Zertifikat für die Authentifizierung wird. Zusätzlich erhält Firma A von Firma B die Info, mit welcher RootCA das Serverzertifikat signiert ist und/oder den Fingerprint des Serverzertifikats, damit Firma A sicher sein kann, sich mit dem richtigen Server zu verbinden.

Das wäre für beide Verfahren die halbwegs sauberen Wege, die Authentifizierungsdetails auszutauschen.
 
Bedeutet dies also, dass der best practice Weg ist, dass nur die Firma B (Anbieter) den rsa-public-Key erstellt und ausgibt und Firma A diesen in seinem Client hinterlegt und die Verbindung aufbaut?
Zu der Variante mit dem SSL-Zertifikat. Wäre der Weg so erklärt? Firma A kauft ein SSL-Zertifikat und schickt sein public an Firma B. Diese importiert es auf seinem Server und Firma A kann sich damit auf dem Server per sftp anmelden und hoch bzw. herunterladen?
Ich stehe gerade auf dem Schlauch. Der Partner verlangt von mir einen rsa-public-key, um dann die sftp-Login-Daten erhalten zu können.
 
Das ist richtig. Du generierst ein Schlüsselpaar und übergibst den 'Public Key'. Nachdem der Serveradmin diesen in den Server eingebaut hat, kannst Du dich mit deinem 'Private Key' einwählen.
 
Zurück
Oben