ftps://¶
TLS-wrapped FTP — implicit TLS on port 990 (encrypted from byte 0), or
explicit AUTH TLS upgrade on port 21. Backed by
github.com/jlaffaye/ftp with a TLS handshake configured by Helix. The
ftp:// URI surface is fully inherited; the parameters
documented below are the TLS-only additions.
For SSH-based remote file transfer, use sftp:// (distinct
wire protocol).
URI shape¶
host:port is the server. Default port is 990 (implicit TLS); set
implicit=false and use port 21 for explicit AUTH TLS upgrade.
Parameters¶
ftps:// inherits every parameter from ftp:// (auth,
connection, consumer extras, FTP-specific knobs, and the
file://-inherited filter/sort/read-lock/scheduler/producer surface).
The TLS-specific additions are:
| Param | Type | Default | Description |
|---|---|---|---|
implicit |
boolean | false |
Implicit TLS (port 990, encrypted from byte 0) vs explicit (AUTH TLS upgrade on port 21). |
securityProtocol |
enum | TLSv1.3 |
Minimum TLS version. TLSv1.0 / TLSv1.1 / TLSv1.2 / TLSv1.3. |
tlsCAFile |
string | — | Path to PEM CA bundle for server certificate verification. |
tlsCertFile |
string | — | Path to client certificate (PEM) for mutual TLS. |
tlsKeyFile |
string | — | Path to client private key (PEM). |
tlsInsecureSkipVerify |
boolean | false |
Skip server certificate verification (test-only). |
See ftp:// for every other parameter — the descriptor list
is generated by paramDescriptors("ftps") in
pkg/component/ftp/describe.go.
Body shape¶
Identical to ftp://:
- Consumer: file bytes in In body (or
*exchange.StreamBodywithstreamDownload=true);CamelFile*headers populated. - Producer: In body bytes are written to a remote file named by
fileName/CamelFileName.
Examples¶
Implicit TLS poll (port 990) with read-lock:
- from: ftps://secure.example.com:990/outbox?implicit=true&username=svc&password=secret&binary=true&readLock=changed&move=.done/${file:name}
Explicit AUTH TLS (port 21):
mTLS with a custom CA bundle:
- to: ftps://partner.example.com/uploads?implicit=true&tlsCAFile=/etc/ssl/partner-ca.pem&tlsCertFile=/etc/ssl/client.crt&tlsKeyFile=/etc/ssl/client.key&binary=true
Pin TLS to 1.2 for a legacy server:
- from: ftps://legacy.example.com:990/outbox?implicit=true&securityProtocol=TLSv1.2&username=u&password=p
Behavior notes¶
- Implicit vs explicit. Implicit is the safer default (the
handshake happens immediately); explicit relies on the server
accepting
AUTH TLSover plain TCP. Pick the one your server is configured for. tlsInsecureSkipVerify. Disables certificate verification entirely. Acceptable for staging environments with self-signed certs; do not use it in production.- TLS handshake errors at startup. Same as
ftp://— controlled bythrowExceptionOnConnectFailed. Default is WARN-and-retry per poll. - Inherited semantics. Same
passiveMode=truedefault, samestepwisesemantics, same idempotent auto-enable, same remotereadLockdefaults (readLockCheckInterval=5s,readLockTimeout=20s).readLock=fileLockis rejected.
Source¶
pkg/component/ftp/ftp.go—NewFTPS()registers theftpsscheme on the sameComponenttype.pkg/component/ftp/describe.go— TLS parameter descriptors live inschemeImplementedDescriptors("ftps").pkg/component/ftp/tls_certpool.go— CA bundle loading.