[TLS] Add SSL config parsing and SslContext/SslHandler factory
- Dominant language
- Java
- Stars
- 2.1k
- Forks
- 625
- Avg merge
- 3d 14h
- Merged PRs (30d)
- 97
Description
### Search before asking
- [x] I searched in the [issues](https://github.com/apache/fluss/issues) and found nothing similar.
### Description
Part of #3786 ([FIP-29: (m)TLS Support](https://cwiki.apache.org/confluence/spaces/FLUSS/pages/406620533/FIP-29+m+TLS+Support)).
**Wave 0** — no dependencies, can start immediately.
Add the foundational, currently-unused building blocks that later tickets wire into the Netty pipeline — no runtime behavior change on their own.
- `SslConfig` — parses keystore/truststore paths, passwords, type (JKS/PKCS12), enabled protocols, cipher suites from `Configuration`.
- `SslContextFactory` — builds a Netty `SslContext`/`SslHandler` from an `SslConfig`, for both server and client sides.
- New config options: `security.ssl.enabled.listeners`, `security.ssl.enabled.protocols`, `security.ssl.cipher.suites`, `security.ssl.keystore.*`, `security.ssl.key.password`, `security.ssl.truststore.*`, and the `client.security.ssl.*` mirror.
- Unit tests covering keystore/truststore loading, protocol/cipher restriction, and hostname-verification setup.
**Depends on:** none.
**Depended on by:** server pipeline integration (#3792), client pipeline integration (#3797), certificate hot-reload (#3799).
_Estimated diff size: ~925 lines._
### Willingness to contribute
- [x] I'm willing to submit a PR!
Contributor guide
No contributing guide indexed for this repository
Research direction
Read FIP-29 and the existing Configuration patterns first, then trace how Netty pipeline integration is organized. Implement the unused SslConfig and SslContextFactory building blocks with the listed server and client options. Done means unit tests cover keystore/truststore loading, protocol and cipher restrictions, and hostname verification without changing runtime behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, security
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100