On this page
  1. Prerequisites
  2. Installation
  3. Setup Wizard
  4. Manual Configuration
  5. Verify Your Deployment
  6. Upload a PCAP
  7. Using the Dashboard
  8. Venafi Integration
  9. Architecture
  10. Troubleshooting

1 Prerequisites

CipherFlag runs as three Docker containers. You need Docker 20.10+ and Docker Compose v2+ installed. No other dependencies.

DeploymentCPURAMDisk
Evaluation / PCAP-only2 cores4 GB20 GB
Small network (< 1 Gbps)4 cores8 GB50 GB
Medium network (1–10 Gbps)8 cores16 GB100 GB

For live capture, you'll also need access to a SPAN port, mirror port, or network TAP. For PCAP-only analysis, no special network access is needed.

2 Installation

Option A: Install Script (Recommended)

The install script downloads the correct binary for your platform (Linux/macOS, amd64/arm64) and places it in /usr/local/bin.

curl -fsSL https://raw.githubusercontent.com/YOUR-ORG/cipherflag/main/scripts/install.sh | sh
cipherflag setup

Option B: Clone & Docker Compose

git clone https://github.com/YOUR-ORG/cipherflag.git
cd cipherflag
cp .env.example .env          # edit to set NETWORK_INTERFACE
docker-compose up -d

Pre-built images are published to ghcr.io for both linux/amd64 and linux/arm64. Docker Compose will pull them automatically.

3 Setup Wizard

If you used the install script, run cipherflag setup for an interactive walkthrough that handles:

cipherflag setup

# The wizard will:
#  1. Detect available network interfaces
#  2. Let you select one for live capture (or skip for PCAP-only)
#  3. Ask for Venafi credentials (optional)
#  4. Validate the Venafi connection if configured
#  5. Generate config files (.env, cipherflag.toml)
#  6. Pull Docker images and start services

You can skip Venafi integration during setup and configure it later from the Settings page in the web UI.

4 Manual Configuration

If you prefer manual setup, two files control everything:

.env — Docker Compose variables

# Network interface for live capture (leave empty for PCAP-only)
NETWORK_INTERFACE=

# PostgreSQL password
POSTGRES_PASSWORD=changeme

# Venafi (optional)
VENAFI_ENABLED=false
VENAFI_BASE_URL=
VENAFI_CLIENT_ID=
VENAFI_REFRESH_TOKEN=
VENAFI_FOLDER=\VED\Policy\Discovered\CipherFlag

config/cipherflag.toml — Application settings

Controls analysis rules, polling intervals, export settings, and more. See the full configuration reference for all options.

Security note: CipherFlag listens on port 8443. Protect it with network segmentation, a reverse proxy with auth, or host firewall rules. Built-in authentication is available with admin/viewer RBAC.

5 Verify Your Deployment

Once services are running, check that everything is healthy:

# Check container status
docker-compose ps

# All three should be "Up":
#   cipherflag     → API + frontend on :8443
#   zeek-sensor    → network monitoring
#   postgres       → database

# Test the API
curl -s http://localhost:8443/api/v1/certificates | head

Open http://localhost:8443 in your browser. You'll see the dashboard — if this is a fresh install, it will be empty until certificates are discovered or uploaded.

6 Upload a PCAP

The fastest way to see CipherFlag in action is to upload a packet capture file.

# From the UI:
#   Navigate to the Upload page → drag & drop a .pcap or .pcapng file

# From the CLI:
curl -X POST http://localhost:8443/api/v1/pcap \
  -F "[email protected]"

Zeek processes the capture, extracts certificates, and they appear in your inventory within seconds. The upload page shows real-time job status: queued → processing → complete.

Test data: Don't have a PCAP handy? Capture some TLS traffic with tcpdump -i eth0 -w test.pcap port 443, then upload the file.

7 Using the Dashboard

The dashboard is organized around the workflow: discover → inspect → assess → act.

PKI Explorer

The interactive force-directed graph shows your entire CA hierarchy. Click any node to see certificate details, or use blast radius analysis to trace every certificate a CA has signed.

Analytics

Five tabs give you different views into your certificate posture: chain flow (Sankey diagram), ownership (treemap), crypto posture (donut + heatmap), expiry forecast (stacked timeline), and source lineage (where certificates were discovered).

Reports

Four report types — Domain Certificate, CA Authority, Crypto Compliance, and Expiry Risk — each with drill-down, print, and CSV export.

Global Search

The search bar in the nav searches across certificate names, fingerprints, serial numbers, SANs, server names, and IPs. Type 2+ characters to see categorized results.

8 Venafi Integration

CipherFlag pushes discovered certificates to Venafi automatically. Both Cloud and on-prem TPP are supported.

Venafi Cloud

# In .env or the Settings page:
VENAFI_ENABLED=true
VENAFI_PLATFORM=cloud
VENAFI_API_KEY=your-api-key
VENAFI_REGION=us          # or "eu"

Venafi TPP (On-Prem)

VENAFI_ENABLED=true
VENAFI_PLATFORM=tpp
VENAFI_BASE_URL=https://tpp.example.com/vedsdk
VENAFI_CLIENT_ID=your-client-id
VENAFI_REFRESH_TOKEN=your-refresh-token
VENAFI_FOLDER=\VED\Policy\Discovered\CipherFlag

The push scheduler runs on a configurable interval (default 60 minutes), sending new and updated certificates. Per-certificate failure tracking includes exponential backoff and dead-lettering after 5 failures. Check status at Settings → Venafi or GET /api/v1/venafi/status.

9 Architecture

CipherFlag runs as three containers orchestrated by Docker Compose:

┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ Zeek Sensor │────▶│ CipherFlag │────▶│ PostgreSQL zeek 7.x Go API + SvelteKit v15 ~120 MB image ~40 MB image └──────────────────┘ └──────────────────┘ └──────────────────┘ SPAN / TAP :8443 web UI pg-data volume pcap-input vol zeek-logs vol

The Zeek sensor watches a network interface for live traffic and processes uploaded PCAPs. CipherFlag's Go backend parses Zeek's JSON logs, scores certificates, and serves the SvelteKit frontend. PostgreSQL stores everything.

10 Troubleshooting

Containers won't start

Check docker-compose logs for errors. Common issues: port 8443 already in use, or the .env file has a syntax error.

No certificates appearing

If using live capture, verify your NETWORK_INTERFACE is correct and the container has the necessary capabilities. Try uploading a PCAP first to confirm the pipeline works.

Venafi push failing

Use GET /api/v1/venafi/status to check for dead-lettered certificates. Verify credentials with the "Test Connection" button in Settings. For TPP, ensure your refresh token hasn't been revoked.

Need more help?

Check the full documentation in the docs/ directory on GitHub, or open an issue.