基于 Traefik 的激进 TLS 安全配置实践
作者:互联网
前言
Traefik是一个现代的HTTP反向代理和负载均衡器,使部署微服务变得容易。
Traefik可以与现有的多种基础设施组件(Docker、Swarm模式、Kubernetes、Marathon、Consul、Etcd、Rancher、Amazon ECS...)集成,并自动和动态地配置自己。
今天我们基于 Traefik on K8S 来详细说明如何对 TLS 安全进行「激进」配置。
环境基本信息
- K8S 集群;
- 域名:
ewhisper.cn
(由 DNSPod 进行 DNS 管理,已指向 K8S 集群的 Traefik Ingress 的 LoadBalancer 公网地址) - 使用 cert-manager 自动管理的证书
*.ewhisper.cn
作为 Traefik 的默认证书;cert-manager 位于cert-manager
NameSpace 下 - Traefik 2.4.8 安装于 K8S 集群的
kube-system
NameSpace 下,且使用 CRDs 进行配置。
「激进」的 TLS 配置
全站受信证书 + HTTPS。具体如下:
- 全站 HTTPS 443 端口配置;
- 证书来自 Let's Encrypt(由 cert-manager 自动申请)(⚡激进,生产慎用!)
- 监听 HTTP 请求,并重定向到 HTTPS;(⚡激进,生产慎用!)
- 启用 HSTS 功能(⚡激进,生产慎用!)
- TLS 版本限定在 TLS 1.3(⚡激进,生产慎用!)
配置实践
TLS 版本限定在 TLS 1.3
使用 Traefik 的 CRD - TLSOption 配置如下:
apiVersion: traefik.containo.us/v1alpha1
kind: TLSOption
metadata:
name: default
namespace: kube-system
spec:
minVersion: VersionTLS13