Traefik 为服务增加 HTTPS 反对
背景
- 紧接着 Traefik 学习这篇文章,尝试应用 Let’s Encrypt 为 Traefik 的服务增加 HTTPS 反对
Let’s Encrypt
- Let’s Encrypt 是一家收费、凋谢、自动化的证书颁发机构(CA),为公众的利益而运行。它是一项由 Internet Security Research Group(ISRG)提供的服务。以尽可能对用户敌对的形式收费提供为网站启用 HTTPS(SSL/TLS)所需的数字证书。
Traefik 的反对
-
创立
acme.json
文件用来存储证书信息touch acme.json chmod 600 acme.json
- 留神务必设置权限为 600,否则会报错
-
traefik Docker Compose 配置文件
traefik.yaml
:version: '3' services: reverse-proxy: image: traefik restart: always ports: - "80:80" - "443:443" networks: - traefik volumes: - ./traefik.toml:/etc/traefik/traefik.toml - /var/run/docker.sock:/var/run/docker.sock - ./config/:/etc/traefik/config/:ro - ./acme.json:/letsencrypt/acme.json container_name: traefik # 网关健康检查 healthcheck: test: ["CMD-SHELL", "wget -q --spider --proxy off localhost:8080/ping || exit 1"] interval: 3s timeout: 5s # 创立内部网卡 docker network create traefik networks: traefik: external: true
- 要害局部是应用 volume 向容器引入
acme.json
- 要害局部是应用 volume 向容器引入
-
traefik 动态配置文件
traefik.toml
# Let's Encrypt [certificatesResolvers.myresolver.acme] email = "example.com" storage="/letsencrypt/acme.json" [certificatesResolvers.myresolver.acme.tlsChallenge]
- 这里应用 TLSChallenge 的形式申请,其余形式参考 traefik 的文档
-
为服务增加 HTTPS 反对,这里还是以 Halo 博客为例
version: '3.1' services: halo: image: halohub/halo container_name: halo restart: unless-stopped volumes: - /root/blog/halo:/root/.halo labels: - traefik.http.routers.halo.rule=Host(`blog.demoli.xyz`) - traefik.http.routers.halo.tls=true - traefik.http.routers.halo.tls.certResolver=myresolver - traefik.http.routers.halo.entrypoints=https - traefik.http.services.halo.loadbalancer.server.port=8090 - traefik.http.routers.halo-redirect-https.rule=Host(`blog.demoli.xyz`) - traefik.http.routers.halo-redirect-https.entrypoints=http - traefik.http.routers.halo-redirect-https.service=noop@file - traefik.http.routers.halo-redirect-https.middlewares=https-redirect@file - traefik.http.routers.halo-redirect-https.priority=100 networks: default: external: name: traefik
- 要害配置是
traefik.http.routers.halo.tls=true
与traefik.http.routers.halo.tls.certResolver=myresolver
- 要害配置是
注意事项
- Let’s Encrypt 证书的有效期是 90 天,Traefik 官网文档说能够反对证书的自动更新,然而查问材料的过程中,发现有博主说并没有自动更新,这里临时记录,若 90 天后呈现问题,则再尝试解决
- 实际上应用 letsencrypt 申请失去
acem.json
格局的负数能够应用traefik-certs-dumper
镜像转换为个别的pem
格局,具体应用形式参考 Blog CDN 减速
参考
- 对于 Let‘s Encrypt 的具体介绍
- Let’s Encrypt 的运作形式 - Let’s Encrypt – 收费的 SSL/TLS 证书 https://letsencrypt.org › zh-cn › how-it-works
- Traefik Let’s Encrypt
- Docker-compose with let’s encrypt: TLS Challenge
- 在 traefik 中为服务开明 https
- 如何白 piao 一个收费的泛域名 SSL 证书 – 掘金