Skip to content

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

详细文档

常见用例

自动 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 文档

基于 MIT 协议发布