# sFTP Verbindung mittels TLS herstellen



## mirko_S (23. Juni 2006)

Hallo Javagemeinde,
ich habe ein Problem bei dem ich eure Hilfe benötige.

Erklärung: Ich muss eine Verbindung zu einem Server aufbauen und Daten austauschen. 
Das Problem ist das der Server nur "FTP over SSL (explicit!)" versteht. Leider bin ich auf der suche nach einer Java API die alle Funktionen (connect, Zertifikat austauschen, datenübertragen u.s.w) biete bis jetzt gescheitert. (für Perl gibt es die openSSL aber für java !!)

Nun dachte ich mir versuche ich es doch selber auf low-level Ebene aber leider kenne ich mich mit dem sun.security packet nicht aus und weis nicht genau wie ich es verwenden kann.

Ich hatte angefangen einen Socket zu dem Server aufzubauen, als ich dann auf dem Server war hab ich ihm das Kommando "AUTH TLS" gesendet. Nun hat der Server aber erwartet das die Kommunikation nur noch verschlüsselt abläuft (und mein Problem hat begonnen).

Ich habe an der Stelle keine Ahnung wie ich von einem unverschlüsselten Socket zu einem verschlüsselten wechseln kann und auch noch das Zertifikat vom Server bekommen kann.

Ich hoffe ich konnte mein Problem irgendwie verständlich rüberbringen und währe sehr dankbar wenn mir jemand mit einem kleinen Codeschnippsel oder mit einem Link zu einer guten Erklärung helfen könnte.

Als Anlage habe ich mal den Output von FileZilla angehängt das ihr sehen könnt was ich mit Java machen muss.

Gruß und Dake für eure Hilfe
Mirko


```
Status:    Connecting to xxx.xxx.xxx.xxx:921 ...
Status:    Connected with xxx.xxx.xxx.xxx:921, negotiating SSL connection...
Response:    220-TCPFTPS1 IBM FTP CS V1R6 at blablabla-Server, 11:15:41 on 2006-06-23.
Response:    220 Connection will close if idle for more than 10 minutes.
Command:    AUTH TLS
Response:    234 Security environment established - ready for negotiation
Status:    SSL connection established. Waiting for welcome message...
Command:    USER <usernae>
Response:    331 Send password please.
Command:    PASS ******
Response:    230 P527424 is logged on.  Working directory is "<userdir>.".
Command:    SYST
Response:    215 MVS is the operating system of this server. FTP Server is running on z/OS.
Command:    FEAT
Response:    211- Extensions supported
Response:     AUTH TLS
Response:     PBSZ
Response:     PROT
Response:    211 End
Command:    PBSZ 0
Response:    200 Protection buffer size accepted
Command:    PROT P
Response:    200 Data connection protection set to private
Status:    Connected
Status:    Retrieving directory listing...
Command:    PWD
Response:    257 "'<userdir>.'" is working directory.
Command:    TYPE A
Response:    200 Representation type is Ascii NonPrint
Command:    PASV
Response:    227 Entering Passive Mode xxx,xxx,xxx,xxx,11,91)
Command:    LIST
Response:    125 List started OK
Status:    SSL connection established
Response:    250 List completed successfully.
Status:    Directory listing successful
```


----------



## MeinerEiner_80 (24. Juni 2006)

Moin!
Benutze doch einfach den "SSLSocket" der JSSE Erweiterung. Der sollte alle Funktionen bieten die du wünscht.
Auf der Sun Seite findest du auch ein kleines Beispiel dazu.
Ob es auch eine FTP API gibt, die du dann benutzen kannst, bin ich nun überfragt, aber zur Not könnte man das ja auch mit einer "URLConnection" manuell realisieren

*grüssle*
MeinerEiner


----------

