You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Traefik中使用已有的LetsEncrypt证书?

如何在Traefik中导入已有的.pem格式Let's Encrypt证书?

当然可以!Traefik完全支持导入已有的.pem格式Let's Encrypt证书,而且能和自动生成的acme.json证书共存——你只需要针对特定域名配置自定义证书即可,不会影响其他域名的自动证书管理流程。下面是具体的实现步骤:


1. 准备证书文件

确认你手上的.pem文件包含两个核心部分:

  • fullchain.pem:完整的证书链(包含域名证书和Let's Encrypt的根/中间证书)
  • privkey.pem:对应的私钥文件
    把这两个文件放在一个Traefik容器能访问到的本地目录,比如./traefik/certs。

2. 挂载证书目录到Traefik容器

如果用Docker Compose部署Traefik,需要在volumes部分添加挂载,让容器能读取到证书文件:

services:
  traefik:
    image: traefik:v2.10 # 替换为你实际使用的Traefik版本
    volumes:
      - ./traefik/certs:/certs # 本地证书目录映射到容器内的/certs路径
      - ./traefik/acme.json:/acme.json # 保留原有的自动证书文件
      - /var/run/docker.sock:/var/run/docker.sock

3. 配置自定义证书(两种可选方式)

方式一:静态配置(全局/入口级)

直接在traefik.yml静态配置文件中添加TLS证书规则,指定哪些域名使用自定义证书:

tls:
  certificates:
    - certFile: /certs/fullchain.pem
      keyFile: /certs/privkey.pem
      domains:
        - main: your-domain.com # 主域名
        - sans: sub.your-domain.com # 可选,关联的子域名

方式二:动态配置(File Provider,更灵活)

如果需要更精细地控制域名匹配规则,推荐用File Provider:

  1. 创建一个tls-custom.yml配置文件,内容如下:
    tls:
      certificates:
        - certFile: /certs/fullchain.pem
          keyFile: /certs/privkey.pem
          domains:
            - main: your-domain.com
            - sans: blog.your-domain.com, api.your-domain.com
    
  2. 在traefik.yml中启用File Provider,指定配置文件路径:
    providers:
      file:
        filename: /traefik/config/tls-custom.yml # 替换为容器内的实际路径
      docker:
        endpoint: unix:///var/run/docker.sock
        exposedByDefault: false
    

4. 关键注意事项

  • 权限设置:私钥文件privkey.pem必须设置为600权限(仅所有者可读),证书链fullchain.pem设置为644即可,避免权限过高导致Traefik读取失败。
  • 证书优先级:自定义证书的域名匹配优先级高于acme.json中的自动证书,Traefik会自动为请求域名选择最合适的证书。
  • 切换回自动证书:如果后续想恢复自动证书管理,只需要移除自定义证书的配置项即可,acme.json中的证书会继续生效。

内容的提问来源于stack exchange,提问作者Dagrada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:43:53