User Tools

Site Tools


infrastructure:tls-certificates

This is an old revision of the document!


TLS / SSL Certificates

Configured: 2026-02-06

Overview

All internal services use valid Lets Encrypt certificates via Cloudflare DNS challenge.

Domain Structure

Type Domain Target
Wildcard *.home.miskam.xyz 10.100.161.102 (Traefik)
Public burgenlandkreis.events WAN (existing)

Services

Legacy URLs (*.srv.internal) still work but use self-signed certificates.

Architecture

Internet/VPN
     |
     v
*.home.miskam.xyz (Cloudflare DNS → 10.100.161.102)
     |
     v
┌─────────────────────────────────────────┐
│           Traefik (CT 102)              │
│  - Lets Encrypt via DNS Challenge       │
│  - Wildcard cert: *.home.miskam.xyz     │
│  - Auto-renewal                         │
└─────────────────────────────────────────┘
     |
     v
Backend Services (CT 110-115)

Certificate Details

  • Issuer: Lets Encrypt R12
  • Type: Wildcard
  • Domain: *.home.miskam.xyz
  • Valid: 90 days (auto-renewed by Traefik)
  • Challenge: DNS-01 via Cloudflare API

Configuration Files

File Purpose
/etc/traefik/traefik.yaml Main config with ACME/DNS settings
/etc/traefik/conf.d/automation.yml Service routes
/etc/traefik/ssl/acme.json Certificate storage
/etc/systemd/system/traefik.service.d/cloudflare.conf CF API token

Cloudflare Setup

  • Zone: miskam.xyz
  • DNS Record: *.home A 10.100.161.102 (not proxied)
  • API Token: Stored in Vaultwarden (Zone:DNS Edit permission)

Adding New Services

1. Add route to /etc/traefik/conf.d/automation.yml:

    newservice:
      rule: "Host(`newservice.home.miskam.xyz`)"
      service: newservice
      entryPoints:
        - websecure
      tls:
        certResolver: letsencrypt
        domains:
          - main: "*.home.miskam.xyz"

2. Add service backend:

    newservice:
      loadBalancer:
        servers:
          - url: "http://10.100.161.XXX:PORT"

3. Traefik picks up changes automatically (file provider)

Troubleshooting

# Check certificate status
cat /etc/traefik/ssl/acme.json | jq ".letsencrypt.Certificates[].domain"
 
# Check Traefik logs
journalctl -u traefik -f
 
# Test certificate
echo | openssl s_client -connect 10.100.161.102:443 -servername n8n.home.miskam.xyz 2>/dev/null | openssl x509 -noout -dates
infrastructure/tls-certificates.1770408533.txt.gz · Last modified: by admin