Konfigurace TLS¶
Nastavení TLS certifikátů pro nasazení MazeVault
Verze dokumentu: 1.0.0
Poslední aktualizace: 2026-02-10
1. Požadavky na certifikáty¶
| Certifikát | Účel | Formát | Minimální velikost klíče |
|---|---|---|---|
| Server TLS | HTTPS pro webové rozhraní + API | PEM | RSA 2048 / ECDSA P-256 |
| OCSP TLS | HTTPS pro OCSP Responder (volitelné) | PEM | RSA 2048 / ECDSA P-256 |
| Database SSL | Šifrování připojení k PostgreSQL | PEM | RSA 2048 |
| Agent mTLS CA | CA pro klientské certifikáty agentů | PEM | RSA 2048 |
2. Možnosti certifikátů¶
Možnost A: Interní CA MazeVault¶
Použijte vestavěnou certifikační autoritu MazeVault k vydání serverových certifikátů pro interní nasazení:
- Vytvořte kořenovou CA v MazeVault (Nastavení → Certifikační autority → Vytvořit CA)
- Vydejte serverový certifikát pro vaši doménu
- Distribuujte certifikát kořenové CA všem klientům jako důvěryhodnou CA
Možnost B: Let's Encrypt (veřejný internet)¶
Pro nasazení přístupná z internetu použijte Let's Encrypt s cert-manager (Kubernetes) nebo certbot (on-premise):
Kubernetes (cert-manager):
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: mazevault-tls
namespace: mazevault
spec:
secretName: mazevault-tls
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
dnsNames:
- vault.example.com
On-premise (certbot):
sudo certbot certonly --nginx -d vault.example.com
# Certificates stored in /etc/letsencrypt/live/vault.example.com/
Možnost C: Enterprise CA (interní PKI)¶
Využijte stávající PKI infrastrukturu vaší organizace k vydání certifikátů:
- Vygenerujte CSR na serveru MazeVault
- Odešlete jej vaší enterprise CA (Microsoft ADCS, Venafi atd.)
- Nainstalujte vydaný certifikát a řetězec CA
3. Konfigurace TLS — On-premise¶
Umístění souborů certifikátů¶
/opt/mazevault/certs/
├── server.crt # Server certificate + intermediate CA chain
├── server.key # Private key (chmod 600)
└── ca.crt # Root CA certificate (for verification)
Oprávnění souborů¶
chmod 644 /opt/mazevault/certs/server.crt
chmod 600 /opt/mazevault/certs/server.key
chmod 644 /opt/mazevault/certs/ca.crt
chown root:root /opt/mazevault/certs/*
Nastavení TLS v Nginx¶
Doporučená konfigurace TLS pro on-premise nasazení:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
4. Konfigurace TLS — Kubernetes¶
TLS Secret¶
kubectl create secret tls mazevault-tls \
--namespace mazevault \
--cert=server.crt \
--key=server.key
Ingress TLS¶
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mazevault-ingress
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
spec:
tls:
- hosts:
- vault.example.com
secretName: mazevault-tls
5. SSL databáze¶
Konfigurace SSL pro PostgreSQL¶
Pro samostatný PostgreSQL:
# postgresql.conf
ssl = on
ssl_cert_file = '/var/lib/postgresql/certs/server.crt'
ssl_key_file = '/var/lib/postgresql/certs/server.key'
ssl_ca_file = '/var/lib/postgresql/certs/ca.crt'
ssl_min_protocol_version = 'TLSv1.2'
Pro Azure Database for PostgreSQL Flexible Server je SSL vynuceno ve výchozím nastavení.
Připojovací řetězec¶
| SSL režim | Popis | Doporučeno |
|---|---|---|
disable |
Bez SSL | ❌ |
require |
SSL vyžadováno, bez ověření CA | ⚠️ Pouze pro vývoj |
verify-ca |
SSL + ověření certifikátu CA | ✅ |
verify-full |
SSL + CA + ověření názvu hostitele | ✅ Produkce |
6. Obnova certifikátů¶
Monitorování expirace¶
MazeVault sleduje expiraci TLS certifikátů a generuje upozornění:
| Práh | Úroveň upozornění |
|---|---|
| 30 dní před expirací | Varování |
| 7 dní před expirací | Kritické |
Postupy obnovy¶
Let's Encrypt (automatická obnova):
Ruční obnova:
1. Získejte nový certifikát od vaší CA
2. Nahraďte soubory v /opt/mazevault/certs/
3. Znovu načtěte Nginx: docker compose exec nginx nginx -s reload
Kubernetes (cert-manager): Obnova probíhá automaticky.
7. Ověření¶
# Verify TLS configuration
openssl s_client -connect vault.example.com:443 -servername vault.example.com < /dev/null 2>/dev/null | openssl x509 -noout -dates -subject
# Check certificate chain
openssl s_client -connect vault.example.com:443 -showcerts < /dev/null
# Test with curl
curl -v https://vault.example.com/api/v1/health
8. Vlastní CA pro odchozí spojení (SMTP, LDAP atd.)¶
Pokud váš SMTP server, LDAP adresář nebo jiná externí služba používá certifikát podepsaný privátní / firemní CA, backend kontejner MazeVault musí této CA důvěřovat. Bez toho odchozí TLS spojení selžou s chybou:
Docker Compose¶
- Umístěte certifikát CA (ve formátu PEM) na cestu dostupnou hostu, např.
./certs/corporate-ca.crt. - Připojte certifikát a aktualizujte úložiště důvěryhodných certifikátů:
services:
mazevault-backend:
volumes:
- ./certs/corporate-ca.crt:/usr/local/share/ca-certificates/corporate-ca.crt:ro
entrypoint: ["/bin/sh", "-c", "update-ca-certificates && exec ./main"]
- Restartujte službu:
docker compose up -d mazevault-backend.
Kubernetes¶
Vytvořte ConfigMap ze souboru CA a připojte jej:
apiVersion: v1
kind: ConfigMap
metadata:
name: corporate-ca
data:
corporate-ca.crt: |
-----BEGIN CERTIFICATE-----
<obsah vašeho CA certifikátu>
-----END CERTIFICATE-----
---
# Ve specifikaci Deploymentu backendu:
volumes:
- name: corporate-ca
configMap:
name: corporate-ca
containers:
- name: mazevault-backend
volumeMounts:
- name: corporate-ca
mountPath: /usr/local/share/ca-certificates/corporate-ca.crt
subPath: corporate-ca.crt
readOnly: true
command: ["/bin/sh", "-c", "update-ca-certificates && exec ./main"]
Ověření¶
# Z běžícího kontejneru:
docker exec mazevault-backend openssl s_client -connect smtp.example.com:587 -starttls smtp < /dev/null 2>&1 | head -20
Úspěšné spojení zobrazí Verify return code: 0 (ok).
Související¶
- Nasazení na Azure AKS — Nastavení TLS v Kubernetes
- On-premise nasazení — Konfigurace TLS v Nginx
- Šifrování — Kryptografické standardy