Appearance
issue —— 申请证书
申请一张新证书,或复用已有平台订单。该命令覆盖密钥生成、CSR 提交、DCV 域名验证与证书下载的完整流程,是 CertiMan 中参数最多的命令。运行模式:
- 无参运行
certiman issue→ 进入交互向导,按域名 → 订单选择 → 模板 → 产品 / 年限 / DCV 的顺序逐项询问;选中已有订单时,产品、年限、验证方式与密钥算法取自该订单,不再询问 - 带参运行 → 命令模式,CLI 不进行任何交互询问;缺少必要参数时直接报错(例如仅提供
-d时,提示「使用--product-id指定产品」)
用法
bash
certiman issue [flags]参数
选择器 / 配置来源:
| flag | 短名 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
--domain | -d | []string | 域名,可重复;首个为主域名(CN 与证书目录名);自动去除前后空白;含中间空格、零宽空格、软连字符、BOM 等不可见字符时直接拒绝 | |
--conf | -c | string | 证书配置文件路径(任意位置的 cert.yaml) | |
--profile | string | 账号级模板名(~/.certiman/cc/profiles/<name>.yaml) |
订单与产品:
| flag | 类型 | 默认 | 说明 |
|---|---|---|---|
--product-id | string | CertCloud 产品 ID;不指定则进入产品选择向导 | |
--validity-months | int | 0 | 订单服务期(月);必须是 12 的倍数(整年),上限由产品 max_order_validity_years 决定,非整年时直接拒绝 |
--reuse-order | string | 复用已有平台订单 ID(与 --new-order 互斥);提供此项时可省略 -d,域名取自订单;若同时提供 -d,其取值必须是订单域名的子集,不一致时直接拒绝 | |
--new-order | bool | false | 强制新建订单(将产生费用) |
--wait-timeout | string | 内置 15m | 单轮轮询总时长上限(Duration),未设置时使用内置默认值 15m;取值必须为正(0 与负值均被拒绝),需要缩短等待时可设置较小的值(如 1s);超时按网络超时处理 |
--on-existing-cert | string | 复用的订单上已有证书、且本机没有配对私钥时的处理方式:reissue / download | |
--remark | string | 本机备注(仅存本地,不发送到平台) |
密钥:
| flag | 短名 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
--keylength | -k | string | 密钥算法:ec-256 / ec-384 / 2048 / 3072 / 4096 / sm2。复用订单时以订单上的密钥规格为准;显式提供本项时以本项为准:向导模式先询问是否改用订单的算法,命令模式输出警告后仍按本项生成 | |
--private-key | string | 接管平台已有订单时提供的本地私钥文件(需与 --reuse-order 同时使用) | ||
--new-key | bool | false | 接管在 CertCloud 控制台创建、尚未提交 CSR 的订单时,强制生成新私钥;未提供且证书目录已有私钥时,TTY 下询问,非交互环境默认复用 |
DCV 域名验证:
| flag | 类型 | 默认 | 说明 |
|---|---|---|---|
--dcv.method | string | 验证方式:dns-persist / dns-proxy / dns / cname / file / file-proxy / email | |
--dcv.present | string | 布置验证材料的 hook 脚本路径(每个域名调用一次) | |
--dcv.cleanup | string | 清理验证材料的 hook 脚本路径 | |
--skip-precheck | bool | false | 跳过本地 DNS 预检 |
--redo-present | bool | false | 强制为每条验证记录重新执行 present hook,包括本地已标记 verified=true 的记录;适用于 DNS 记录被误删或需要更换 zone 的情况 |
--approver-email | string | email 验证时使用的审批邮箱 | |
--skip-given-domain | bool | false | 关闭平台赠送的 www / 裸域 |
组织信息(OV / EV 证书):
| flag | 类型 | 说明 |
|---|---|---|
--org.id | string | 组织 ID(复用已通过审核的组织);提供此项时,以下组织字段无需填写 |
--org.name / --org.chinese-name | string | 组织名、组织中文名(随单新建组织时中文名必填,长度 ≤ 200 字符) |
--org.uscc | string | 统一社会信用代码(随单新建组织时必填,长度 ≤ 64 字符;使用 --org.id 复用组织时无需提供) |
--org.country / --org.state / --org.city | string | 国家/地区 / 省 / 市 |
--org.address / --org.postal-code | string | 地址与邮编 |
--org.phone / --org.biz-email | string | 组织电话与公务邮箱 |
--org.contact.first-name / --org.contact.last-name | string | 联系人名 / 姓 |
--org.contact.title / --org.contact.email / --org.contact.phone | string | 联系人职务 / 邮箱 / 电话 |
续期与部署:
| flag | 类型 | 默认 | 说明 |
|---|---|---|---|
--renew.auto-cert | bool | false | 开启证书自动续期(服务期内不额外计费) |
--renew.auto-order | bool | false | 开启订单自动续费(将产生费用) |
--renew.days-before | int | 0 | 提前续期天数;大于 0 时按此判定,不请求 ARI;等于 0 时按 ARI 建议窗口判定,并以剩余有效期比例作为回退判据 |
--deploy-hook | string | 部署 hook 脚本路径 |
输出格式:
| flag | 类型 | 默认 | 说明 |
|---|---|---|---|
--output.formats | []string | 输出格式列表,以逗号分隔或重复指定:pem / der / pfx / jks | |
--cert-file / --key-file / --ca-file / --fullchain-file | string | 额外安装位置:在证书目录的标准文件之外,将内容另外复制一份到指定路径;相对路径以证书目录为基准,私钥权限固定为 0600;目录不存在或不可写时报错,且不执行 deploy hook。见 证书配置文件 · 额外安装位置 | |
--output.pfx-file | string | PFX 输出文件名 | |
--output.jks-file / --output.jks-alias | string | JKS 输出文件名与别名(别名默认 server) | |
--output.pfx-encoding | string | modern | PFX 编码: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 <主域名>。
