Skip to content

issue —— 申请证书 ​

申请一张新证书,或复用已有平台订单。该命令覆盖密钥生成、CSR 提交、DCV 域名验证与证书下载的完整流程,是 CertiMan 中参数最多的命令。运行模式:

  • 无参运行 certiman issue → 进入交互向导,按域名 → 订单选择 → 模板 → 产品 / 年限 / DCV 的顺序逐项询问;选中已有订单时,产品、年限、验证方式与密钥算法取自该订单,不再询问
  • 带参运行 → 命令模式,CLI 不进行任何交互询问;缺少必要参数时直接报错(例如仅提供 -d 时,提示「使用 --product-id 指定产品」)

用法 ​

bash
certiman issue [flags]

参数 ​

选择器 / 配置来源:

flag短名类型默认说明
--domain-d[]string域名,可重复;首个为主域名(CN 与证书目录名);自动去除前后空白;含中间空格、零宽空格、软连字符、BOM 等不可见字符时直接拒绝
--conf-cstring证书配置文件路径(任意位置的 cert.yaml)
--profilestring账号级模板名(~/.certiman/cc/profiles/<name>.yaml)

订单与产品:

flag类型默认说明
--product-idstringCertCloud 产品 ID;不指定则进入产品选择向导
--validity-monthsint0订单服务期(月);必须是 12 的倍数(整年),上限由产品 max_order_validity_years 决定,非整年时直接拒绝
--reuse-orderstring复用已有平台订单 ID(与 --new-order 互斥);提供此项时可省略 -d,域名取自订单;若同时提供 -d,其取值必须是订单域名的子集,不一致时直接拒绝
--new-orderboolfalse强制新建订单(将产生费用)
--wait-timeoutstring内置 15m单轮轮询总时长上限(Duration),未设置时使用内置默认值 15m;取值必须为正(0 与负值均被拒绝),需要缩短等待时可设置较小的值(如 1s);超时按网络超时处理
--on-existing-certstring复用的订单上已有证书、且本机没有配对私钥时的处理方式:reissue / download
--remarkstring本机备注(仅存本地,不发送到平台)

密钥:

flag短名类型默认说明
--keylength-kstring密钥算法:ec-256 / ec-384 / 2048 / 3072 / 4096 / sm2。复用订单时以订单上的密钥规格为准;显式提供本项时以本项为准:向导模式先询问是否改用订单的算法,命令模式输出警告后仍按本项生成
--private-keystring接管平台已有订单时提供的本地私钥文件(需与 --reuse-order 同时使用)
--new-keyboolfalse接管在 CertCloud 控制台创建、尚未提交 CSR 的订单时,强制生成新私钥;未提供且证书目录已有私钥时,TTY 下询问,非交互环境默认复用

DCV 域名验证:

flag类型默认说明
--dcv.methodstring验证方式:dns-persist / dns-proxy / dns / cname / file / file-proxy / email
--dcv.presentstring布置验证材料的 hook 脚本路径(每个域名调用一次)
--dcv.cleanupstring清理验证材料的 hook 脚本路径
--skip-precheckboolfalse跳过本地 DNS 预检
--redo-presentboolfalse强制为每条验证记录重新执行 present hook,包括本地已标记 verified=true 的记录;适用于 DNS 记录被误删或需要更换 zone 的情况
--approver-emailstringemail 验证时使用的审批邮箱
--skip-given-domainboolfalse关闭平台赠送的 www / 裸域

组织信息(OV / EV 证书):

flag类型说明
--org.idstring组织 ID(复用已通过审核的组织);提供此项时,以下组织字段无需填写
--org.name / --org.chinese-namestring组织名、组织中文名(随单新建组织时中文名必填,长度 ≤ 200 字符)
--org.usccstring统一社会信用代码(随单新建组织时必填,长度 ≤ 64 字符;使用 --org.id 复用组织时无需提供)
--org.country / --org.state / --org.citystring国家/地区 / 省 / 市
--org.address / --org.postal-codestring地址与邮编
--org.phone / --org.biz-emailstring组织电话与公务邮箱
--org.contact.first-name / --org.contact.last-namestring联系人名 / 姓
--org.contact.title / --org.contact.email / --org.contact.phonestring联系人职务 / 邮箱 / 电话

续期与部署:

flag类型默认说明
--renew.auto-certboolfalse开启证书自动续期(服务期内不额外计费)
--renew.auto-orderboolfalse开启订单自动续费(将产生费用)
--renew.days-beforeint0提前续期天数;大于 0 时按此判定,不请求 ARI;等于 0 时按 ARI 建议窗口判定,并以剩余有效期比例作为回退判据
--deploy-hookstring部署 hook 脚本路径

输出格式:

flag类型默认说明
--output.formats[]string输出格式列表,以逗号分隔或重复指定:pem / der / pfx / jks
--cert-file / --key-file / --ca-file / --fullchain-filestring额外安装位置:在证书目录的标准文件之外,将内容另外复制一份到指定路径;相对路径以证书目录为基准,私钥权限固定为 0600;目录不存在或不可写时报错,且不执行 deploy hook。见 证书配置文件 · 额外安装位置
--output.pfx-filestringPFX 输出文件名
--output.jks-file / --output.jks-aliasstringJKS 输出文件名与别名(别名默认 server)
--output.pfx-encodingstringmodernPFX 编码:modern(默认,AES-256)/ legacy(3DES+SHA1,兼容旧版环境)

示例 ​

bash
# 单域名 DV 证书(命令模式;无参运行 `certiman issue` 则进入交互向导)
certiman issue -d example.com \
               --product-id trustasia_ssl_dv_v2 --validity-months 12 --dcv.method dns

# 多域名,指定产品与密钥算法
certiman issue -d example.com -d www.example.com \
               --product-id trustasia_ssl_dv_v2 --validity-months 12 -k ec-256

# 复用账号级模板 + 自动化 DNS 验证
certiman issue -d example.com --profile e2e-dv \
               --dcv.method dns --dcv.present ./dns-present.sh \
               --dcv.cleanup ./dns-cleanup.sh

# 一次配好证书自动续期与自动部署
certiman issue -d example.com \
               --renew.auto-cert \
               --deploy-hook "systemctl reload nginx"

# 用配置文件驱动
certiman issue -c ./shop-cert.yaml

等待期间的三种情形

  • 验证值尚未生成:提交订单后,平台尚未生成 DCV 验证值时,CLI 短暂等待后重新检测;超时后仍未生成时输出办理进度链接,稍后运行 certiman issue -d <主域名> 继续申请
  • 验证尚未通过:按平台返回的 HTTP 状态码判定是否重试。4xx / 5xx 退避重试至 --wait-timeout(30 秒起,每次 ×1.5,上限 2 分钟);401 / 403(无权限)、404(订单不存在)以及未取得应答的网络故障立即上报
  • 订单转入平台侧人工环节(审批中 / 待确认 / 待补资料 / 审核中):CLI 不等待至 --wait-timeout,输出当前环节与办理进度链接后正常退出(退出码 0),该环节通过后运行 certiman issue -d <主域名> 继续申请。等待期间的提示包含当前环节,环节变化时提示一次

输出 ​

申请流程结束后,issue 输出一份完整视图,与 status 使用同一张表。末行的「证书目录」给出该证书的本地路径,无需回溯此前的过程输出。证书链与私钥按输出格式区别处理:

  • 证书链只在 table(默认人类格式)下输出:表格之前先将 fullchain.pem 原样写入 stdout,可直接核对证书内容与证书链是否完整
  • -o json / -o text 不含证书链(非 TTY 环境默认使用 json 格式)
  • 私钥在任何格式下都不输出

视图之后输出本轮结论:证书已签发并保存到本机时为「本轮已完成,当前无需处理」;否则为「本轮尚未完成」,并给出继续申请的命令 certiman issue -d <主域名>。

0成功(无参向导全流程示例)
text
» 请输入证书域名(首个为主域名,支持通配符如 *.example.com;直接回车结束):
? 域名 1 [如 example.com 或 *.example.com]: example.com
? 域名 2 [如 example.com 或 *.example.com]: 
✔ 共 1 个域名,证书目录:certs/example.com
» 检测到 1 个模板 e2e-dv [DV / 12个月 / dns-persist]
? 复用模板 e2e-dv? (Y/n): y
» 模板 e2e-dv 字段
  product_id        trustasia_ssl_dv_v2
  validity_months   12
  dcv.method        dns-persist
  csr.key_type      ecdsa
  org.id            (未设)
  deploy.hook       sh ./deploy-log.sh
? 复用这份? (Y/n): Y
✔ 已应用模板 e2e-dv,后续步骤会用模板值作默认
✔ 配置已保存到 ~/.certiman/cc/certs/example.com/cert.yaml(目录名由主域名派生)
✔ 订单已创建: TYDwETAS
? 是否开启证书自动续期(服务期内不额外计费)? (y/N): n
[hook:present] [tc-present] 已布置 TXT _validation-persist.example.com = trustasia.com; accounturi=https://trustasia.com/acct/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 (RecordId=2362625233,剩余 0)
[hook:present] [tc-present] 全部布置完成,等待 DNS 传播 20s...
» DNS 记录传播需要时间,正在等待并重试检测…
等待中 · 已等 1m39s
[hook:cleanup] [tc-cleanup] 已删除 RecordId=2362625233(_validation-persist.example.com,结果 success)
✔ 域名验证已全部通过
✔ 证书已保存到 ~/.certiman/cc/certs/example.com
✔ example.com 部署完成
-----BEGIN CERTIFICATE-----
MIIFxTCCBK2gAwIBAgIQ...(叶子证书,此处省略)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEsTCCA5mgAwIBAgIQ...(中间证书,此处省略)
-----END CERTIFICATE-----
项目        内容
证书        example.com
域名        example.com
状态        已签发
订单        TYDwETAS
证书 ID     gF8KdBlw
证书到期    2027-02-22
剩余        199 天
已下载      2026-08-07
部署        ✓
自动续期    —
数据时间    2026-08-07T08:17:58Z(本地快照)
证书目录    ~/.certiman/cc/certs/example.com
✔ 本轮已完成,当前无需处理
0继续申请 + -o json(示例)
text
[hook:present] [tc-present] 已布置 TXT _validation-persist.www.example.com = trustasia.com; accounturi=https://trustasia.com/acct/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 (RecordId=2362595087,剩余 0)
[hook:present] [tc-present] 全部布置完成,等待 DNS 传播 20s...
[hook:cleanup] [tc-cleanup] 已删除 RecordId=2362595087(_validation-persist.www.example.com,结果 success)
✔ 域名验证已全部通过
✔ 证书已保存到 ~/.certiman/cc/certs/www.example.com
✔ www.example.com 部署完成
{
  "result": "issued",
  "name": "www.example.com",
  "domains": [
    "www.example.com"
  ],
  "status": "issued",
  "order": {
    "id": "mZDma48D",
    "expires_at": null,
    "valid_from": null,
    "status": "domain_verifing",
    "checked_at": "2026-08-07T08:17:58.991004Z"
  },
  "cert": {
    "id": "A8znxTY6",
    "not_before": "2026-08-07T15:00:00Z",
    "not_after": "2027-02-22T14:59:59Z"
  },
  "days_left": 199,
  "expired": false,
  "dir": "~/.certiman/cc/certs/www.example.com",
  "local": {
    "downloaded_at": "2026-08-07T08:17:59.033549Z",
    "converted": [],
    "deploy": {
      "exit_code": 0,
      "at": "2026-08-07T08:17:59.097021Z"
    }
  },
  "dcv": [
    {
      "domain": "www.example.com",
      "method": "dns-persist",
      "host": "_validation-persist.www.example",
      "type": "TXT",
      "value": "trustasia.com; accounturi=https://trustasia.com/acct/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
      "verified": true,
      "checked_at": "2026-08-07T08:17:56.574468Z"
    }
  ],
  "renew": {
    "auto_cert": false,
    "auto_order": false,
    "days_before": 0
  }
}
7手动布置 DNS 记录,等待检测时取消(示例)
text
✔ 配置已保存到 ~/.certiman/cc/certs/cancel1746.example.com/cert.yaml(目录名由主域名派生)
✔ 订单已创建: 01RJD0Vj

» 域名验证 · dns · 还有 1 个待验证

  域名         cancel1746.example.com
  主机记录     _dnsauth.cancel1746.certiman
  完整记录名   _dnsauth.cancel1746.example.com
  记录类型     TXT
  记录值       20260807094634ph63evbme7ky3qrm6xg8xpj8xawj4xo

→ 请在 DNS 服务商控制台添加上述记录(阿里云 / 腾讯云 / Cloudflare 等)

» 办理进度链接 · 免登录 · 可转发给 DNS 管理员或审核对接人:
  https://certcloud.cn/ssl-order-audit-link?token=<实时生成,24 小时有效>
» DNS 记录传播需要时间,正在等待并重试检测…

» 逐域名验证结果:
  ~ cancel1746.example.com  检测中
错误: 已取消
日志: ~/.certiman/logs/cc-2026-08.log
5部分域名平台拒绝
text
✔ example.com        已验证
✗ mail.example.com   CAA 拒绝 (code=1071, request-id=req_abc123)
~ www.example.com    检测中

错误: 部分域名未通过验证(1 个被平台拒绝,1 个仍在检测中)
日志: ~/.certiman/logs/cc-2026-08.log

相关命令 ​

  • status —— 查看订单进度
  • renew —— 对已有证书发起续期
  • reissue —— 重新颁发(更换私钥或增减 SAN)
  • deploy —— 单独执行部署 hook