TLS.md
September 1, 2026 · View on GitHub
Start Console service with TLS:
Copy your public.crt and private.key to ~/.console/certs, then:
./console server
2021-01-19 02:36:08.893735 I | 2021/01/19 02:36:08 server.go:129: Serving console at http://[::]:9090
2021-01-19 02:36:08.893735 I | 2021/01/19 02:36:08 server.go:129: Serving console at https://[::]:9443
For advanced users, console has support for multiple certificates to service clients through multiple domains.
Following tree structure is expected for supporting multiple domains:
certs/
│
├─ public.crt
├─ private.key
│
├─ example.com/
│ │
│ ├─ public.crt
│ └─ private.key
└─ foobar.org/
│
├─ public.crt
└─ private.key
...
Outbound TLS verification
Console verifies the certificate chain and host name of every HTTPS peer it
connects to: the SILO server and its STS endpoint, identity providers,
Prometheus, the Log Search API, release checks, and audit or log webhooks. The
trust store is the system root store plus every certificate under
~/.console/certs/CAs (or the directory given by --certs-dir), plus the
--tls-ca file when it is set. Console's own serving certificates are added to
that pool as well, so a Console that talks to itself trusts itself.
Embedded in SILO, Console uses the server's pool (certs/CAs plus the server's
own public certificates) and dials the address the server advertises to it:
MINIO_SERVER_URL when set, otherwise https://127.0.0.1:<port>. The server
certificate must cover that name or address, exactly as the server's own
internode transport already requires; set MINIO_SERVER_URL to a name the
certificate covers if it does not.
Connect Console to a compatible server using TLS and a self-signed certificate
Copy the SILO/MinIO-compatible server's ca.crt (or, for a self-signed server
certificate, its public.crt) under ~/.console/certs/CAs, then:
export CONSOLE_MINIO_SERVER=https://localhost:9000
./console server
The certificate must include the name Console dials in its Subject Alternative
Names: localhost and 127.0.0.1 for the example above. A certificate that
only names the machine's public host name must be addressed by that name.
You can verify that the apis work by doing the request on localhost:9090/api/v1/...
Explicit, endpoint-scoped compatibility switch
When the server certificate cannot be fixed, standalone Console can be told to skip verification for exactly one peer:
export CONSOLE_MINIO_SERVER=https://silo.internal:9000
export CONSOLE_MINIO_SERVER_TLS_SKIP_VERIFY=on
./console server
The exemption applies only to HTTPS requests whose authority equals the
configured CONSOLE_MINIO_SERVER origin (host name compared case-insensitively,
default port 443 filled in). Identity providers, Prometheus, webhooks, any
other host, and any redirect away from that origin remain verified. The switch
is ignored, with a logged warning, when CONSOLE_MINIO_SERVER is not an
https:// URL. SILO removes CONSOLE_* variables before it configures the
embedded Console, so the switch is standalone-only.