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