HTTPS/TLS

Enable HTTPS for the CrossWatch UI and manage TLS certificates.

CrossWatch can serve the web UI over HTTP or HTTPS.

When you enable HTTPS, you have two options:

  • Self-signed (generated by CrossWatch)

  • Custom cert + key (mounted into the container)

circle-exclamation

Support scope note

circle-exclamation

Enable HTTPS (UI)

  1. Open Settings → User Interface

  2. Set Protocol to HTTPS

  3. Click Save

  4. Restart CrossWatch (container restart required).

Then open:

  • https://<host>:<port>/

circle-info

Self-signed certificates encrypt traffic. Browsers still warn until you trust the certificate. See Trust the self-signed certificate.

circle-exclamation

After switching HTTP ↔ HTTPS

TLS manager (Advanced)

Next to Protocol, click Advanced.

You can:

  • Check current TLS status (paths, expiry, SANs, fingerprint)

  • Switch between Self-signed and Custom

  • Regenerate the self-signed certificate

  • Download the generated .crt file

  • Validate that custom cert/key paths exist

Restart required

Restart is required after:

  • HTTP ↔ HTTPS switch

  • Self-signed regeneration

  • Changing cert/key paths

  • Changing hostname/SAN inputs

Certificate files and persistence

Default generated files:

  • Cert: /config/tls/crosswatch.crt

  • Key: /config/tls/crosswatch.key

circle-exclamation

Related: Docker setup.

Trust the self-signed certificate

Download crosswatch.crt from Advanced. Install it into your OS or browser trust store.

  1. Run mmc

  2. File → Add/Remove Snap-in → Certificates → Computer account

  3. Import into Trusted Root Certification Authorities

  4. Restart the browser

Put a reverse proxy in front of CrossWatch. Terminate TLS there with Let’s Encrypt.

  • CrossWatch stays on HTTP internally

  • The proxy handles renewals

Typical choices: Caddy, Nginx, Traefik.

Custom certificates in CrossWatch

  1. Mount your PEM files into the container.

  2. Set the cert and key paths in Advanced (or config.json).

  3. Switch Protocol to HTTPS.

  4. Restart CrossWatch.

Example paths:

  • /config/tls/fullchain.pem

  • /config/tls/privkey.pem

config.json reference

Related: Configuration (config.json).

Key fields:

  • ui.protocol: "http" or "https"

  • ui.tls.self_signed

    • true: generate /config/tls/crosswatch.crt + /config/tls/crosswatch.key if missing

    • false: use cert_file + key_file

  • ui.tls.hostname: used for CN and included in SAN

  • ui.tls.valid_days: validity for generated self-signed certs

  • ui.tls.cert_file: absolute path to cert PEM (custom mode)

  • ui.tls.key_file: absolute path to key PEM (custom mode)

circle-exclamation

Troubleshooting

HTTPS enabled, but UI won’t load

  • Restart CrossWatch

  • Use https://... in the URL

  • Confirm your exposed port matches the container port mapping

Advanced modal shows missing files

  • Confirm /config is mounted

  • Check container paths under /config/tls/

Browser still warns after installing the cert

  • Install into the correct trust store (System / Trusted Root)

  • Fully restart the browser process

Last updated