Traefik - 自动签发Let‘s Encrypt 免费ssl证书


环境信息

  • 操作系统:CentOS 7.9
  • Traefik版本:2.10.3
  • Traefik安装目录:/usr/local/traefik

Traefik配置修改

静态配置

# 添加或修改 traefik静态配置文件 certificatesResolvers 部分内容
cat /usr/local/traefik/traefik.yaml
entryPoints:
  web:
    address: ":80"
  websecure:
    address: ":443"
    http:
      tls:
        # 通过 路由部分的host自动生成证书(Let's Encrypt)
        certResolver: leresolver
        ## foobar为自定义的一堆tls选项设置的集合的别名
        #options: foobar
        # example.com 替换成你自己的域名
        domains:
          - main: "example.com"
            sans:
            - "*.example.com"

certificatesResolvers:
    leresolver:
      acme:
        email: <通知邮箱>
        storage: acme.json
        dnsChallenge:
          provider: "cloudflare"
          delayBeforeCheck: 10

动态配置

# 添加或修改 traefik静态配置文件 http.routers.entryPoints部分内容
# 添加或修改 traefik静态配置文件 http.routers.tls部分内容(可选)
# example.com替换成自己的域名
$ cat /usr/local/traefik/conf.d/provider.yaml
http:
  routers:
    lm-demo:
      entryPoints:
        - "web"
        - "websecure"
      ## 只给单个路由匹配的域名生成tls证书时只在路由处开启tls配置即可
      #tls:
      #  certResolver: leresolver
      #  domains:
      #    - main: "example.com"
      #      sans:
      #      - "*.example.com"
      rule: "HostRegexp(`{subdomain:[a-z-_]*}.example.com`) && PathPrefix(`/demo`)"
      service: http-lm-demo
      
  services:
    http-lm-demo:
      loadBalancer:
        #healthCheck:
        #  path: /
        #  interval: "60s"
        #  timeout: "3s"
        servers:
          - url: http://127.0.0.1:8000

环境变量

# 配置域名所在dns解析平台所需账号凭据, 示例中是cloudflare平台
$ cat /usr/local/traefik/acme.env 
CF_API_EMAIL="xxx"		# Cloudflare 邮箱
CF_API_KEY="xxx"	# Cloudflare api key

systemd配置

$ cat /etc/systemd/system/traefik.service 
...

[Service]
EnvironmentFile=/usr/local/traefik/acme.env

...

# 重启traefik
$ systemctl daemon-reload
$ systemctl restart traefik.service

验证

  • 查看日志
# 查看安装目录下是否生成acme.json, 并且内容是否已有 Certificates 部分内容, 为null则还未成功
$ grep -A 3 'Certificates' /usr/local/traefik/acme.json
  • 浏览器访问: https://www.example.com/demo
    在这里插入图片描述

  • 签发失败的情况
# 如果签发失败可以查看运行日志
$ tail -n 50 /data/logs/traefik/traefik.log

### Let's Encrypt 免费 SSL 证书申请和配置 #### 使用 Certbot 工具安装与部署 Certbot 是一个用于自动化请求、获取以及更新 Let’s Encrypt SSL/TLS 证书的客户端软件。通过简单的命令行操作即可完成整个流程。 对于基于 Red Hat 的 Linux 发行版,可以通过 `yum` 来安装 certbot: ```bash yum -y install certbot ``` 确认安装成功后可查看当前版本号以验证环境设置是否正确[^2]: ```bash certbot --version ``` #### 获取并颁发证书 为了获得由 Let’s Encrypt 提供的有效 HTTPS 认证文件,需执行如下指令来指定网站根目录路径及域名信息,并提供有效的电子邮件地址以便接收通知或恢复密钥丢失等问题的通知服务。下面是一个具体的例子说明如何利用 webroot 插件为多个子域同时签发证书: ```bash certbot certonly \ --webroot \ -w /webroot/www_example_com \ -d www.example.com \ -w /webroot/www_example_com \ -d example.com \ -m contact@example.com ``` 这条命令会引导用户完成一系列交互式的提问环节,最终生成所需的私钥和公钥对以及其他必要的认证材料存储于 `/etc/letsencrypt/live/example.com/` 文件夹下[^3]。 #### 自动化续订机制 Let’s Encrypt 所发放的数字凭证有效期仅为90天,因此建议定期安排自动化的续约任务以防过期影响线上业务正常运作。大多数操作系统都支持定时作业调度功能(如 cron),可以用来设定周期性的检查与更新动作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值