最近我写了一个小脚本,能在一台极简的 Ubuntu 服务器上,快速搭建起一个“自己的证书中心(CA)”。
为什么要这么做呢?
- 内网或测试环境里,我们也需要 HTTPS 证书。
- Let’s Encrypt 在内网申请不到。
- 手工敲 OpenSSL 命令容易出错,还得维护一堆配置文件。
于是,我写了一个脚本 time_ca.sh,一键解决这些问题。
这个脚本能做什么?
初始化 CA
./time_ca.sh init- 提示输入公司名字(不填就用默认:
Time SoftWare Co., Ltd)。 - 自动生成 Root CA 和 Intermediate CA。
- 安装 OpenSSL(如果没装)。
- 提示输入公司名字(不填就用默认:
签发证书
./time_ca.sh sign example.com www.example.com 10.10.10.10- 一次签发多个 SAN(域名/IP)。
- 输出
key.pem、cert.pem和fullchain.pem。
- 重复签发
如果同一个域名之前签过证书,它会自动清理旧的,重新签发新的。 查看信息
./time_ca.sh info会列出 Root、Intermediate 和已签发证书的路径。
脚本的几个小细节
- 公司名称可自定义:初始化时输入,留空就是默认值。
- 允许重复 CN:避免 “证书已存在” 的报错。
- FullChain 文件:只包含 leaf + intermediate,不会重复 Root。
- SAN 支持:一次搞定多个域名和 IP。
配图展示
1. 目录结构
初始化后的目录树结构
2. 证书链关系
Root → Intermediate → Leaf Cert
3. 运行截图
签发完成后的终端输出
4. 应用场景
浏览器信任 Root CA 后,直接访问内网 HTTPS 服务
怎么用?
下载脚本:
wget -O time_ca.sh https://blog.zxua.de/usr/uploads/2025/09/2433137990.sh chmod +x time_ca.sh初始化:
sudo ./time_ca.sh init签发证书:
sudo ./time_ca.sh sign myapp.local 192.168.1.100应用里配置证书:
fullchain.pem→ 配到 Web 服务器。key.pem→ 配到 Web 服务器。ca.cert.pem→ 导入系统,作为根证书。
总结
这个脚本不是替代 Let’s Encrypt 的,而是一个小工具,适合:
- 内网服务
- 测试环境
- 想快速搞定 HTTPS 的人
有了它,我再也不用记复杂的 OpenSSL 命令,几秒钟就能给服务发证书。