自签泛域名 SSL 证书生成器¶
用于颁发泛域名证书,方便开发环境调试。
请勿用于生产环境,生产环境请购买正式证书或使用
zxtool le申请 Let's Encrypt 免费证书。
0x01. 优点¶
- 可创建任意数量的网站证书,只需导入一次根证书
- 减少重复的组织信息输入,创建证书时只需要输入域名
- 泛域名证书可减少 nginx 配置,一个证书覆盖所有子域名
- 支持 SAN(Subject Alternative Name),一个证书支持多个域名
0x02. 系统要求¶
- Linux / macOS / Windows
- 系统已安装
openssl
0x03. 命令格式¶
zxtool ssl <子命令> [选项]
| 子命令 | 说明 |
|---|---|
init |
初始化输出目录结构 |
root |
生成 Root CA 证书 |
cert |
生成域名证书 |
0x04. 生成证书¶
为指定域名签发泛域名 SSL 证书。首次运行时会自动生成 Root CA。
# 为单个域名生成证书
zxtool ssl cert -d example.dev
# 为多个域名生成证书
zxtool ssl cert -d example.dev another.dev third.dev
# 指定输出目录
zxtool ssl cert -d example.dev --output /path/to/certs
| 参数 | 说明 |
|---|---|
-d, --domain |
域名列表(必需) |
--output |
输出目录路径(默认 ./out) |
输出示例:
Issuing wildcard certificate for: example.dev, another.dev
SAN: DNS:*.example.dev,DNS:example.dev,DNS:*.another.dev,DNS:another.dev
Certificates generated for: example.dev
Domain dir: /path/to/out/example.dev
Files:
example.dev.bundle.crt — 完整证书链(可用于 nginx 配置)
example.dev.crt — 网站证书
example.dev.key.pem — 私钥
root.crt — 根证书(需导入系统并信任)
0x05. 仅初始化目录¶
初始化输出目录结构,创建 OpenSSL CA 所需的文件:
zxtool ssl init
0x06. 仅生成 Root CA¶
单独生成根证书,不签发网站证书:
# 生成 Root CA
zxtool ssl root
# 强制重新生成 Root CA
zxtool ssl root --force
0x07. 生成的证书文件¶
out/
├── ca.cnf # OpenSSL CA 配置
├── root.crt # 根证书(需导入系统并信任)
├── root.key.pem # 根证书私钥
├── cert.key.pem # 证书私钥(所有网站证书共用)
├── index.txt # CA 数据库
├── serial # 证书序列号
├── newcerts/ # CA 签发的证书备份
└── <domain>/
├── <domain>.crt # 网站证书
├── <domain>.bundle.crt # 拼接了 CA 的完整证书链(用于 nginx)
├── <domain>.key.pem -> ../cert.key.pem # 私钥(符号链接)
└── root.crt -> ../root.crt # 根证书(符号链接)
其中 <domain>.bundle.crt 已拼接好 CA 证书,可直接添加到 nginx 配置中。
0x08. 证书有效期¶
| 证书类型 | 默认有效期 | 修改方式 |
|---|---|---|
| 根证书 | 20 年(7300 天) | 修改 DEFAULT_ROOT_DAYS 常量 |
| 网站证书 | 2 年(730 天) | 修改 DEFAULT_CERT_DAYS 常量 |
0x09. nginx 配置示例¶
server {
listen 443 ssl;
server_name example.dev *.example.dev;
ssl_certificate /path/to/out/example.dev/example.dev.bundle.crt;
ssl_certificate_key /path/to/out/example.dev/example.dev.key.pem;
# ... 其他配置
}
0x0a. 信任根证书¶
生成证书后,需要将 out/root.crt 导入操作系统的信任存储:
macOS¶
# 添加到钥匙串
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain out/root.crt
Linux (Ubuntu/Debian)¶
sudo cp out/root.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
Windows¶
- 双击
root.crt文件 - 点击"安装证书"
- 选择"本地计算机"
- 选择"将所有的证书都放入下列存储"
- 浏览并选择"受信任的根证书颁发机构"
- 完成安装
0x0b. Chrome 信任证书¶
如果 Chrome 不信任证书,可参考:
- 确保根证书已正确导入系统信任存储
- 重启 Chrome 浏览器
- 访问 chrome://restart 强制重启
目录