一站式申请、部署 SSL 证书
功能
申请证书
通过 Let's Encrypt 申请免费的 SSL 证书,有效期三个月,支持通配符(wildcard)。
支持对接 腾讯云
和 阿里云
的域名解析功能完成 SSL 证书的 DNS 验证(HTTP 验证方式不支持 wildcard 证书,未做支持)。
部署证书
支持以下部署方式:
- 通过 SSH 部署到服务器
- 通过 API 部署到云服务:
定期更新
可以配置 crontab 定期运行。
使用方法
- 新建一个工作目录,用来存放配置文件和申请得到的证书
- 建立配置文件(
config.json5
或 config.json
),包含 DNS 验证配置、部署目标等内容 - 在工作目录下执行
npx @anjianshi/ssl@latest
,或在任意位置执行 npx @anjianshi/ssl@latest --work-directory=工作目录路径
- 也可执行
npx @anjianshi/ssl@latest confirm
来确认配置文件和工作目录是否正常,但并不执行证书申请和部署
工作目录文件结构
logs/
certificates/
${first_domain}-${san_hash}/
fullchain.pem
privkey.pem
account.json
config.json5
配置文件格式
配置文件支持 JSON5 或者标准的 JSON 格式,分别使用 config.json5
和 config.json
作为文件名。
interface Config {
staging?: boolean
account?: string | CreateAccountConfig
challenges?: Record<string, DNSChallengeConfig>
targets?: Record<string, TargetPreset>
certificates: CertificateConfig[]
}
interface CreateAccountConfig {
email?: string
}
interface DNSChallengeConfig {
provider: 'tencent-cloud' | 'aliyun'
secretId: string
secretKey: string
ttl?: number
}
TODO: 待补充
证书申请步骤
- 创建 CA 账号,例如 Let's Encrypt 的。CA 要基于账号来控制请求频率。
- 生成用于给 CSR 签名的秘钥。
- 提供 CSR 信息(证书域名、证书申请者等),配合上一步的秘钥,生成 CSR。
- 用给定的方式完成域名验证。各验证方式流程。
- 生成证书