On this page
Encryption in transit is the encryption of data while it travels over a network, between a browser and a server, between two services or from a CI job to an API, so that anyone who can see or alter the traffic in between can neither read it nor change it without detection; on the web it almost always means TLS, the protocol behind HTTPS.
What TLS guarantees
RFC 8446, the TLS 1.3 specification, says TLS lets applications "communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery" (RFC 8446). It lists three properties of the channel:
- Authentication. "The server side of the channel is always authenticated; the client side is optionally authenticated."
- Confidentiality. Data sent after the handshake "is only visible to the endpoints." TLS "does not hide the length of the data it transmits", though endpoints can pad records.
- Integrity. Data "cannot be modified by attackers without detection."
Where it ends
TLS protects a hop, and the endpoints of that hop see everything. In a typical deployment, that endpoint is not your application:
- A load balancer or CDN often terminates TLS and opens a new connection to the backend. It sees plaintext.
- A reverse proxy on the same machine does the same.
- The server application receives plaintext once TLS is unwrapped, and decides what to store.
So "encrypted in transit and at rest" can still mean that the service, its proxies and its operators see your data between those two states. That is the difference from end-to-end encryption, where only the communicating ends hold keys and every hop in between, including the server, sees ciphertext.
Common mistakes
- Skipping certificate checks in scripts and internal tools ("just for staging"). Without authentication, TLS protects against passive listeners only.
- Plain HTTP behind the edge. Traffic from the CDN to the origin over the public internet should also be encrypted.
- Secrets in URLs. Query strings end up in logs at every endpoint that terminates TLS.
- Treating TLS as the whole answer to "who can read it?"
TLS and Crunu
All traffic to a Crunu server goes over HTTPS. On your own server, the Docker setup puts Caddy in front, which obtains and renews certificates automatically, or uses a Cloudflare Tunnel without open ports; on Cloudflare Workers, Vercel and Google Cloud Run, the platform terminates TLS. The doctor diagnostics check TLS, the certificate's expiry and security headers.
Crunu doesn't rely on TLS for confidentiality of values, though. Values are encrypted on your device before they are sent, so whoever terminates TLS, Caddy, a CDN or the server itself, sees ciphertext. Your password and Secret Key aren't sent at all: sign-in works by signing a one-time challenge with a key derived from them on your device. A compromised proxy or TLS connection sees only what the server sees, which is described in what the server sees. The broader comparison of models is in who can decrypt your secrets?.
Sources
- RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3, checked October 30, 2026.
From the blog
Self-hosting
Vault Community for a 10-person team: what you actually run
Running HashiCorp Vault Community means quorum, unsealing after restarts, snapshots you schedule yourself and audit devices that can stop it. The full list.
Self-hosting guide
Self-hosting
Workers, Vercel or Cloud Run: where to host a vault
Docker, Cloudflare Workers, Vercel or Google Cloud Run? What changes for a self-hosted Crunu server on each, the limits that matter, and two choices made once.
Self-hosting guide
Servers
Secrets on servers without files on disk
A .env file on a server outlives every deploy and ends up in backups. How an agent with a lease delivers secrets from memory, and what it cannot hide.
Self-hosting guide