ByteVeda / ByteVeda/flexiq

grpc: terminate TLS and mTLS in the server

Open
#838 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area/server area/wire P1 security
Dominant language
Rust
Stars
20
Forks
2
Avg merge
5h 10m
Merged PRs (30d)
127

Description

From crates/flexiq-server/README.md:

TLS is not terminated here; a bearer token proves who is calling and does not encrypt the
connection, so that belongs to a sidecar proxy or a service mesh.

That is a defensible position for a mesh deployment and an unreasonable one for everyone else.
A bearer token over cleartext is a bearer token in a log, and the deployments least likely to
have a mesh — a VM, a single box, a small Kubernetes cluster with no Istio — are the ones the
gRPC door is most useful to.

Add in-process TLS:

  • Server TLS — certificate and key by path, configured by env like everything else, on the
    gRPC listener and on the attach listener. Both carry credentials.
  • mTLS — optional client certificate verification against a CA bundle, as defence in depth
    beside the bearer token, not instead of it. The token still says which principal; the
    certificate says the connection is authorised to exist at all.
  • Reload without restart, or a documented refusal. Certificates rotate on a 90-day cadence
    and the token store already reloads per call, so a restart-to-rotate story will look like an
    oversight.

Keep the sidecar path working and documented — a mesh deployment should not have to configure
TLS twice. This is an option, not a new requirement.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with crates/flexiq-server/README.md and trace how environment configuration reaches the gRPC and attach listeners. Define the optional certificate, key, and CA-bundle settings, then investigate whether certificate reload can follow the token store's per-call reload behavior; otherwise document the restart requirement. Done means both listeners carry configured credentials, optional mTLS verification works, and the sidecar path remains documented and usable.

Written by the indexing model from the issue text.

Assessment

Tech stack
grpc, rust
Domain
api, backend, networking, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.