nevzheng opened a new issue, #12300:
URL: https://github.com/apache/gravitino/issues/12300
### Describe the subtask
The capability milestone: after this lands, a Java caller can complete a TLS
or
mutual-TLS handshake with a Gravitino server using its own trust material —
no
JVM-wide configuration. No public commitment on `GravitinoClient` yet;
that's the
next subtask. `HTTPClient` is the boundary here, which keeps this reviewable
on
its own and means nothing in it is blocked on the user-facing surface.
## Deliverable
Per the design doc from M0:
- **The contract:** a `TLSConfigurer` interface — `SSLContext`, hostname
verifier, permitted protocols, permitted cipher suites.
- **The common path:** a helper that builds a configurer from the usual
ingredients — a truststore, optionally a client keystore — so the
private-CA
and mutual-TLS journeys don't require hand-rolling an `SSLContext`.
- **The wiring:** `HTTPClient`'s connection manager applies the configurer
when
one is supplied, and is untouched when none is.
- **Proof:** tests performing real handshakes against a TLS-enabled Jetty —
trusted client cert accepted; missing cert rejected; untrusted cert
rejected;
untrusted *server* cert rejected by the client; HTTPS without client auth;
plain HTTP unaffected.
Note: full end-to-end coverage (a real Gravitino server, a real metalake
operation through the public client API) lands in the public-API subtask,
where
that API exists. This subtask proves the client component.
## Acceptance criteria
- [ ] The API matches `design-docs/gravitino-client-tls.md` exactly — any
deviation goes back through the doc, not into review comments
- [ ] No method on the contract returns `null` — absent protocol/cipher
constraints are empty arrays
- [ ] The interface is implementable outside this repo: no types from
`implementation`-scoped dependencies in its public signatures or
default
method bodies
- [ ] Invalid configuration (bad path, wrong password) fails at construction
with a clear message — not at first request
- [ ] TLS fixtures and the TLS server setup helper are consumed from
`server-common`'s test artifacts (M1) — no second copy in the tree
- [ ] A client that supplies no configurer behaves byte-for-byte as today
- [ ] All six handshake scenarios above are covered
Depends on: M0 (the shape), M1 (fixtures and server setup helper).
Blocks: M3 (public API, documentation, and e2e).
### Parent issue
#9836
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]