HTTPS 与 TLS
Traefik 完整支持 HTTPS 和 TLS,可以保护你的服务并提供安全的通信。
关键概念
- TLS 终止:Traefik 可以终止客户端的 TLS 连接,然后将请求以明文形式(HTTP)转发到后端 service。
- Let's Encrypt 集成:通过 ACME 证书解析器自动获取和续订 Let's Encrypt 证书。
- TLS 选项:精细控制 TLS 连接参数,如最低/最高 TLS 版本、密码套件、ALPN 协议等。
- mTLS:双向 TLS 身份验证,确保客户端和服务器都验证彼此的身份。
- SPIFFE:通过 SPIFFE 身份保护后端连接。
快速开始
要为你的 service 启用 HTTPS,最简单的方法是使用 Let's Encrypt ACME 证书解析器:
yaml
# 静态配置
entryPoints:
websecure:
address: ":443"
certificatesResolvers:
letsencrypt:
acme:
email: [email protected]
storage: /acme.json
httpChallenge:
entryPoint: web然后在路由上启用 TLS:
yaml
http:
routers:
my-router:
rule: "Host(`example.com`)"
service: my-service
tls:
certResolver: letsencrypt详细文档
- TLS 概览 - 了解 TLS 配置的工作原理
- TLS 证书 - 证书管理
- TLS 选项 - TLS 连接参数配置
- ACME (Let's Encrypt) - 自动证书获取
- Tailscale - 内部 Tailscale service 的证书
- 证书解析器概览 - 所有可用的证书解析器
- OCSP - 在线证书状态协议装订
- SPIFFE - 使用 SPIFFE 保护后端连接
常见用例
自动 HTTPS 重定向
要将所有 HTTP 请求重定向到 HTTPS:
yaml
http:
middlewares:
redirect-https:
redirectScheme:
scheme: https
permanent: true
routers:
my-router:
rule: "Host(`example.com`)"
service: my-service
middlewares:
- redirect-https使用现有证书
要使用你已经拥有的 TLS 证书:
yaml
http:
routers:
my-router:
rule: "Host(`example.com`)"
service: my-service
tls:
certResolver: letsencrypt安全最佳实践
- 始终使用 TLS 1.2 或更高版本(推荐 TLS 1.3)
- 使用强密码套件
- 启用 HSTS(HTTP Strict Transport Security)以强制 HTTPS
- 定期更新证书
- 使用 mTLS 进行服务间身份验证
更多信息请参考 Traefik TLS 文档。