
devopsansiblede/acme_certs_extractACME Certificate Extract 是一款用于从 ACME 协议获取的证书文件(如 Træfik 生成的 acme.json)中提取证书的工具,以便证书复用。该工具兼容 Træfik v1、v2 版本,同时支持 ACME v1、v2 协议。
*)为指定字符串,避免文件名非法字符。通过 docker run 命令直接运行,需挂载存放 ACME 文件的目录和证书输出目录:
bashdocker run devopsansiblede/acme-cert-extract \ -v $(pwd)/acme:/acme \ # 挂载ACME文件所在目录(默认查找acme.json) -v $(pwd)/certs:/certs # 挂载证书输出目录
项目提供 docker-compose.yml 文件,可用于本地开发或测试最新变更:
yaml# 示例 docker-compose.yml(具体以项目实际文件为准) version: '3' services: acme-cert-extract: image: devopsansiblede/acme-cert-extract volumes: - ./acme:/acme # 本地ACME目录挂载至容器内/acme - ./certs:/certs # 本地证书输出目录挂载至容器内/certs environment: - DEBUG=True # 可选:开启调试模式 - LIMIT_FQDN=example.com # 可选:限制仅处理example.com
启动命令:
bashdocker-compose up -d
注意:项目中的
acme_example.json为测试用例,包含无意义数据,不可用于实际证书提取场景。
通过环境变量调整工具行为,所有布尔值需使用 Python 风格(True/False)。
| 环境变量 | 默认值 | 描述 |
|---|---|---|
ACMEFILE | acme.json | 待解析的 ACME 文件名,可根据实际需求调整。 |
ACMEDIR | /acme | ACME 文件所在目录,需挂载宿主机目录至该路径。 |
CERTSDIR | /certs | 证书输出目录,需挂载宿主机目录至该路径。 |
CERTSPLIT | -----BEGIN CERTIFICATE----- | 证书分割标识,请勿修改。 |
COLOR_ERROR | 1;31 | 错误消息 ANSI 颜色码(格式:样式;前景色,如 1;31 为红色加粗)。 |
COLOR_INFO | 0 | 信息消息 ANSI 颜色码(0 为默认样式)。 |
COLOR_SUCCESS | 0;32 | 成功消息 ANSI 颜色码(0;32 为绿色)。 |
COLOR_WARN | 0;33 | 警告消息 ANSI 颜色码(0;33 为黄色)。 |
CRT_ARCHIVE | True | 是否启用证书归档(保留历史版本)。 |
DEBUG | False | 是否开启调试模式(输出详细日志)。 |
REPLACE_ASTERISK | STAR | 替换域名中星号(*)的字符串(如 *.example.com 转为 STAR.example.com)。域名会转为小写,但此字符串不额外处理。 |
STORE_FLAT_CRTS | True | 是否启用扁平化存储(所有证书存放在 flat 目录,不按域名分目录)。 |
LIMIT_FQDN | – | 限制处理的 FQDN 列表(逗号分隔,如 foo.example.com,bar.example.com)。 |
RUN_SCRIPT | – | 证书更新后执行的脚本名(需挂载至容器内 ${WORKDIR} 目录,无需路径前缀)。用于触发后续操作(如重启容器)。 |
WORKDIR | /certs_extract | 工作目录,除非重新构建镜像,否则请勿修改。 |
环境变量中的颜色码为 ANSI 转义序列的数值部分(脚本自动添加前缀 \u001b 和后缀 m)。格式由多个部分组成,用分号分隔:
0(默认)、1(加粗)、4(下划线)等。3 开头,如 31(红色)、32(绿色)、33(黄色)。4 开头,如 43(黄色背景)。示例:1;31 表示“加粗红色前景色”,对应错误消息;0;32 表示“默认绿色前景色”,对应成功消息。
工具在 CERTSDIR(默认 /certs)下生成以下目录结构:
certs 目录(按域名分目录存储)按域名创建子目录,存放当前证书文件。包含主域名及所有主题备用名称(SANs)对应的目录。每个域名目录下文件:
privkey.pem:私钥cert.pem:证书chain.pem:证书链fullchain.pem:完整证书链(证书+证书链)flat 目录(扁平化存储)所有证书文件直接存放在此目录,文件名格式为 <域名>.<类型>:
<域名>.key:私钥(对应 privkey.pem)<域名>.crt:证书(对应 cert.pem)<域名>.chain.pem:证书链(对应 chain.pem)<域名>_full.crt:完整证书链(对应 fullchain.pem)说明:仅当
STORE_FLAT_CRTS=True时生成此目录。
archive 目录(证书归档)按域名和时间戳存储历史证书版本,目录结构为 archive/<域名>/<时间戳>/,包含该时间点的证书文件。时间戳格式为 %Y%m%d%H%M%S(如 20240520153045)。
说明:仅当
CRT_ARCHIVE=True时生成此目录。
CONTRIBUTING.md 文件。





manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务