起因:总有那么些原因要用到 私钥证书 的,而 Traefik Caddy 等又是能自动申请并续存证书。本站正好用到的是Traefik,而Traefik 并没有分开存私钥和证书的想法,使用的方法是把私钥和证书都存到acme.json中。那么自动分割对小白来说就很有必要。

关键词:

traefik 2 acme.json dump

Traefik2 acme.json 分割成证书cert.pem和key.pem备用

找到Idez的库,经测试轻松容易生成2个独立文件,注意mount acme.json 文件目录即可。

具体用法,跳转详情页,这里给出最简单的用法,compose文件创建certdump 容器,分割所有存储的域名信息。

Dump all certificates

The environment variable DOMAIN can be left out if you want to dump all available certificates.

version: '3.7'

services:
  certdumper:
    image: humenius/traefik-certs-dumper:latest
    volumes:
    - ./traefik/acme:/traefik:ro
    - ./output:/output:rw
    # Don't set DOMAIN
    # environment:
    # - DOMAIN=example.org

PS: 本站Traefik 结构沿用中:

traefik/acme -> /data

output -> data/ssl

Traefik2 acme.json 分割成证书cert.pem和key.pem备用
生成的是一个 cert.pem(证书文件)和key.pem(私钥文件)。

Traefik2 acme.json 分割成证书cert.pem和key.pem备用

具体的docker-compose.yml 配置如下:

version: '3.7'

services:
  traefik:
    image: traefik:latest
    container_name: traefik
    restart: always
    security_opt:
      - no-new-privileges:true
    ports:
      - 80:80
      - 443:443
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./data/traefik.yml:/traefik.yml:ro
      - ./data/acme.json:/acme.json
      # Add folder with dynamic configuration yml
      - ./data/configurations:/configurations
    networks:
      - proxy

  # Watch acme.json and dump certificates to files
  certdumper:
    image: humenius/traefik-certs-dumper:latest
    volumes:
    - ./data:/traefik:ro
    - ./data/ssl:/output:rw
    # Don't set DOMAIN
    # environment:
    # - DOMAIN=example.org

volumes:
  data:

networks:
  proxy:
    external: true

更多的相关讨论,参考

https://github.com/traefik/traefik/issues/2418