Skip to content

配置 ​

CertiMan CLI 的配置来自多层来源,按优先级从高到低依次生效:命令行 flag → -c 指定的配置文件 → --profile 模板 → 证书级 cert.yaml → 全局 certiman.yaml → 内置默认值。本页汇总配置文件路径、数据目录结构、全局 flag、环境变量、退出码等所有跨命令共享的参考信息。

数据目录 ​

CertiMan 将配置、凭证、证书文件、日志集中存放在 ~/.certiman/,可通过环境变量 CERTIMAN_HOME 覆盖到其它路径。

text
~/.certiman/                        # 根目录
├── certiman.yaml                   # 全局配置
├── logs/                           # 日志按月分卷,保留 6 个月自动清理
│   └── cc-YYYY-MM.log              # 手动命令与定时轮次同卷
└── cc/                             # CertCloud 模式目录
    ├── credentials                 # OAuth 凭证(权限 0600)
    ├── profiles/                   # 账号级模板目录
    │   └── <name>.yaml
    └── certs/                      # 证书目录
        └── <CN>/                   # 每张证书一个子目录,CN 为主域名
            ├── cert.yaml           # 证书级配置
            ├── state.json          # 订单/证书状态
            ├── cert.pem            # 服务器证书
            ├── privkey.pem         # 现役私钥(权限 0600)
            ├── chain.pem           # 中间证书链
            ├── fullchain.pem       # 服务器证书 + 中间证书链
            └── converted/          # convert 命令产出的其它格式

敏感文件权限

credentials 与各证书目录下的 privkey.pem 权限为 0600。请勿放宽权限,以免其他用户读取凭证或私钥。

Windows 上的访问控制

Windows 使用 DACL 而非 0600 控制文件访问权限。CertiMan 自动将凭证与私钥的 DACL 限制为仅当前用户、SYSTEM 与管理员可访问;所在卷不支持 DACL(FAT32、exFAT 等)时,权限设置失败不会中断命令,certiman doctor 会报告该问题并给出 icacls 修复命令。

配置文件 ​

CertiMan 使用分层的 YAML 配置。

全局配置 ~/.certiman/certiman.yaml ​

跨模式共享的顶层偏好,通常通过 certiman config set 写入。

yaml
version: 1                          # schema 版本,CLI 写入时自动填充
default_output: table               # table | json | text;未设按 TTY 自动选择
language: zh-CN                     # zh-CN | en;未设时默认 en
insecure_skip_verify: false         # true | false;CERTIMAN_INSECURE 优先于本字段
字段类型允许值说明
versionint1schema 版本,CLI 自动维护
default_outputstringtable / json / text默认输出格式;未设时按 TTY 自动选择
languagestringzh-CN / en输出语言;未设时默认 en
insecure_skip_verifybooltrue / false跳过 TLS 校验;CERTIMAN_INSECURE 优先于本字段,两者均未设置时严格校验证书。对 certiman upgrade 无效,升级过程始终严格校验证书

证书级配置 ~/.certiman/cc/certs/<CN>/cert.yaml ​

每张证书独立一份,记录该证书的申请参数、验证方式、部署 hook、输出格式等。首次通过 certiman issue 申请时自动生成,后续 renew / reissue / status / download / deploy 命令从该文件读取默认值。完整字段清单参见 证书命令 · 证书配置文件。

配置来源与优先级 ​

CertiMan 的配置来自六层来源,同名字段按下图从上到下优先级递减:取优先级最高的非空值,未设置时使用下一层的值。

各层的存放位置与示例:

层位置 / 示例
命令行 flag-o json / -d example.com
-c 指定的配置文件certiman issue -c ./shop-cert.yaml
--profile 模板~/.certiman/cc/profiles/<name>.yaml
证书级 cert.yaml~/.certiman/cc/certs/<CN>/cert.yaml
全局 certiman.yaml~/.certiman/certiman.yaml
CLI 内置默认CLI 自带的默认值

证书申请参数不支持通过环境变量设置:产品、域名、年限、组织信息等只能通过上述六层配置。少数与具体证书无关的本机设置(CERTIMAN_HOME / CERTIMAN_OUTPUT / CERTIMAN_LANG / CERTIMAN_INSECURE)支持环境变量,优先级介于命令行 flag 与 certiman.yaml 之间,见环境变量。

几个常见场景:

  • certiman issue --profile prod -d example.com -o json:-o json 覆盖任何配置里的 default_output;--profile prod 指定的模板仅在首次生成 cert.yaml 时写入(详见 账号命令 · Profile 合并规则)
  • certiman.yaml 中 insecure_skip_verify 设为 false 时,命令行指定 --force 不会覆盖该设置:名称不同的 flag 与配置项互不覆盖,各层配置只按同名字段合并

全局 flag ​

所有子命令都可以使用的 flag。

flag短名类型默认值环境变量说明
--output-ostring按 TTY 自动CERTIMAN_OUTPUT输出格式:table / json / text
--force-fboolfalse跳过交互确认或强制执行,具体语义随命令
--quiet-qboolfalse抑制 stderr 上的进度输出
--verbose-vboolfalse打印 debug 日志到 stderr
--debugboolfalse打印 HTTP 请求/响应(凭证已脱敏)

只读命令的同步行为

status / login status 等展示类命令每次运行都会从平台同步最新状态;同步失败时使用本地快照,并在输出中标注同步时间与失败原因。写操作类命令(issue / renew / reissue 等)始终实时请求平台。

环境变量 ​

下表是跨命令共享的环境变量。除 CERTIMAN_OUTPUT 有对应命令行 flag 外,其余均没有对应 flag,只能通过环境变量或配置文件设置。这类设置在同一台机器上通常保持不变,通过环境变量设置可避免每次运行时重复指定。

变量说明
CERTIMAN_HOME覆盖数据目录路径;未设时默认 ~/.certiman
CERTIMAN_OUTPUT对应 --output;优先级低于 -o flag、高于 certiman.yaml 的 default_output
CERTIMAN_LANG输出语言:zh-CN / en。决定链为 CERTIMAN_LANG > certiman.yaml 的 language > 默认 en
CERTIMAN_INSECURE跳过 TLS 证书校验,按布尔解析(true 开启、false 关闭,非法取值按未设置处理);优先级高于 certiman.yaml 的 insecure_skip_verify 字段。对 certiman upgrade 无效,升级过程始终严格校验证书
NO_COLOR关闭彩色输出,非空即真(业界通用约定)
VISUAL / EDITORcertiman profile edit 使用的编辑器;缺省时 Windows 用 notepad、其它平台用 vi

Hook 脚本运行时还会收到一批以 CERTIMAN_ 开头的上下文变量(如 CERTIMAN_CERT_PATH、CERTIMAN_DCV_FQDN),详见 Hook 命令 · Hook 环境变量。

输出格式 ​

--output / -o 或 default_output 配置项支持三种取值:

值用途何时作为默认
table人类可读的表格,含颜色与对齐交互式 TTY 环境
json结构化 JSON,一次一份完整对象非 TTY(管道、CI、脚本重定向)
textTab 分隔的纯文本,无表头,面向 shell 管道需要手动开启

自动化脚本推荐显式设定 --output json,避免因终端环境不同而得到格式不一致的输出。

时间与时区 ​

CertiMan 输出的所有时间字段(证书有效期 / 订单服务期、checked_at、downloaded_at、cron 下次触发时刻等)一律使用 UTC,尾部带 Z 后缀(RFC 3339)。CLI 不做时区本地化,请自行按本地时区换算。

例:下次触发: 2026-08-17T16:43:00Z 在东八区(北京时间)是 2026-08-18 00:43。

退出码 ​

CertiMan 通过退出码传递结果类别,脚本可据此分支处理。

退出码名称含义
0ExitOK成功(包括无需执行任何操作的幂等成功)
1ExitGeneric通用错误(含 deploy hook 执行失败、output.*_file 目标不可写、cron 本轮存在被跳过的证书或上一轮扫描停滞、前台命令等证书目录锁超时(默认 20 分钟)、upgrade 本地 I/O 失败等)
2ExitUsage参数或用法错误(含配置文件语法错、未知字段、取值超出值域)
3ExitAuth认证失败(未登录、凭证过期、被吊销、refresh_token 已失效)
4ExitNotFound资源不存在(证书、订单、Profile)
5ExitAPIOpenAPI 业务错误(含 403 授权不足、quota_exceeded、rate_limit、平台 5xx 等)
6ExitNetwork网络错误(连接失败 / 超时 / JSON 解析失败)、请求超时,或调度器命令超时(crontab / schtasks 单命令超过 30 秒)
7ExitCanceled用户取消(Ctrl-C、对确认提示回答 n)。以证书是否已保存到本机为界:证书保存前的任一提问(包括向导中是否注册定时任务的提问)被取消时退 7;证书保存后的可选步骤(如保存模板)被取消时视为跳过,仍退 0

判断成败以退出码为准

自动化脚本请以退出码判断结果,不要依赖输出文本。输出文本随语言与输出格式(table/json/text)变化。

相关文档 ​

  • 安装 certiman —— 一键脚本安装
  • 快速上手 —— 从登录、申请证书、部署到开启自动续期的完整流程
  • 配置命令 —— config get / set / list / unset 详细用法
  • Hook 命令 —— hook init / hook test 与 hook 环境变量清单