最近我写了一个小脚本,能在一台极简的 Ubuntu 服务器上,快速搭建起一个“自己的证书中心(CA)”。
为什么要这么做呢?

  • 内网或测试环境里,我们也需要 HTTPS 证书。
  • Let’s Encrypt 在内网申请不到。
  • 手工敲 OpenSSL 命令容易出错,还得维护一堆配置文件。

于是,我写了一个脚本 time_ca.sh,一键解决这些问题。


这个脚本能做什么?

  1. 初始化 CA

    ./time_ca.sh init
    • 提示输入公司名字(不填就用默认:Time SoftWare Co., Ltd)。
    • 自动生成 Root CA 和 Intermediate CA。
    • 安装 OpenSSL(如果没装)。
  2. 签发证书

    ./time_ca.sh sign example.com www.example.com 10.10.10.10
    • 一次签发多个 SAN(域名/IP)。
    • 输出 key.pemcert.pemfullchain.pem
  3. 重复签发
    如果同一个域名之前签过证书,它会自动清理旧的,重新签发新的。
  4. 查看信息

    ./time_ca.sh info

    会列出 Root、Intermediate 和已签发证书的路径。


脚本的几个小细节

  • 公司名称可自定义:初始化时输入,留空就是默认值。
  • 允许重复 CN:避免 “证书已存在” 的报错。
  • FullChain 文件:只包含 leaf + intermediate,不会重复 Root。
  • SAN 支持:一次搞定多个域名和 IP。

配图展示

1. 目录结构

CA 目录结构图
初始化后的目录树结构

2. 证书链关系

证书链关系图
Root → Intermediate → Leaf Cert

3. 运行截图

脚本运行截图
签发完成后的终端输出

4. 应用场景

应用场景图
浏览器信任 Root CA 后,直接访问内网 HTTPS 服务


怎么用?

  1. 下载脚本:

    wget -O time_ca.sh https://blog.zxua.de/usr/uploads/2025/09/2433137990.sh
    chmod +x time_ca.sh
  2. 初始化:

    sudo ./time_ca.sh init
  3. 签发证书:

    sudo ./time_ca.sh sign myapp.local 192.168.1.100
  4. 应用里配置证书:

    • fullchain.pem → 配到 Web 服务器。
    • key.pem → 配到 Web 服务器。
    • ca.cert.pem → 导入系统,作为根证书。

总结

这个脚本不是替代 Let’s Encrypt 的,而是一个小工具,适合:

  • 内网服务
  • 测试环境
  • 想快速搞定 HTTPS 的人

有了它,我再也不用记复杂的 OpenSSL 命令,几秒钟就能给服务发证书。


最后修改:2025 年 09 月 21 日
如果觉得我的文章对你有用,请留下你的脚印吧