徒手实现一个自建CA
字数 800 2025-08-15 21:30:59

自建CA证书权威指南

自建CA的意义

  1. 成本节约:商业SSL证书每年费用约1000元/域名,自建CA可大幅降低证书成本
  2. 安全性增强
    • 浏览器默认不信任自建CA证书,形成天然访问屏障
    • 可实现双端证书认证,必须同时拥有CA根证书和客户端证书才能访问
  3. 灵活扩展
    • 可自定义实现ACME协议分发证书
    • 可添加各种自定义功能
  4. 企业应用:提升内部系统安全等级的基础设施

技术实现

使用Go语言实现,核心依赖:

  • crypto/rsa:生成RSA公钥私钥对
  • crypto/x509:生成证书及相关文件
  • cobra:命令行框架

工具使用指南

1. 环境准备

git clone https://github.com/v1xingyue/wingCA
cd wingCA
make  # 编译生成Linux/Mac可执行文件

2. 生成根证书

./wingCA init --confirm

输出示例:

[54cfc84] 2020/06/06 17:10:17 Begin Init Root CA
2020/06/06 17:10:17 Your CA Name Info : 
CN=ArkRootCA,O=Ryan Ark Center,POSTALCODE=061219,
STREET=NoWhere Road 9+3/4 Site Corner,L=Beijing,ST=Beijing,C=CN
2020/06/06 17:10:17 current crt serial number : 10001
2020/06/06 17:10:18 Your CA Root Have Been Put ./ssl/root/rootCA.crt

3. 签发网站证书

./wingCA issue --type site \
    --common a.b.ssl.com.cn \
    --email xingyue@ssl.com.cn \
    --ip 127.0.0.1 \
    --ip 10.41.13.133 \
    --site a.b.ssl.com.cn \
    --site "*.d.ssl.com.cn" \
    --site localhost

参数说明:

  • --type site:签发网站证书
  • --common:通用名称(CN)
  • --email:联系邮箱
  • --ip:证书包含的IP地址
  • --site:证书包含的域名(支持通配符)

输出示例:

2020/06/06 17:12:00 Issue Site : 
Names : [a.b.ssl.com.cn *.d.ssl.com.cn localhost] 
ips: [127.0.0.1 10.41.13.133] 
email: xingyue@ssl.com.cn 
commonName: a.b.ssl.com.cn
2020/06/06 17:12:00 current crt serial number : 10002
2020/06/06 17:12:00 Issue Success ! 
Cert Path : ./ssl/site/a.b.ssl.com.cn.crt 
Key Path : ./ssl/private/a.b.ssl.com.cn.key

4. 签发客户端证书(用于双端认证)

./wingCA issue --type client \
    --email xingyue@ssl.com.cn \
    --withp12 \
    --password super

参数说明:

  • --type client:签发客户端证书
  • --withp12:生成.p12格式证书
  • --password:设置.p12文件密码

输出示例:

[54cfc84] 2020/06/06 17:12:45 Issue Client : 
email : xingyue@ssl.com.cn 
common name : xingyue
2020/06/06 17:12:45 current crt serial number : 10003
2020/06/06 17:12:45 Issue Success ! 
Cert Path : ./ssl/client/xingyue.crt 
Key Path : ./ssl/private/xingyue.key
2020/06/06 17:12:45 Make p12 file
2020/06/06 17:12:45 p12 file path : ./ssl/p12/xingyue.p12

5. 启动双端认证测试站点

./wingCA sample --common a.b.ssl.com.cn --double

输出示例:

[54cfc84] 2020/06/06 17:14:04 start sample site -> a.b.ssl.com.cn 
startDouble -> true
2020/06/06 17:14:04 validate command : 
2020/06/06 17:14:04 curl -v --cert ssl/client/xingyue.crt --key ssl/private/xingyue.key https://127.0.0.1
2020/06/06 17:14:04 Start Double validate site ...

6. 测试双端认证

curl -v \
    --cacert ssl/root/rootCA.crt \
    --cert ssl/client/xingyue.crt \
    --key ssl/private/xingyue.key \
    https://127.0.0.1

成功响应示例:

* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* Server certificate:
*  subject: CN=a.b.ssl.com.cn@1591434720
*  start date: Jun 6 09:12:00 2020 GMT
*  expire date: Sep 4 09:12:00 2020 GMT
*  subjectAltName: host "127.0.0.1" matched cert's IP address!
*  issuer: C=CN; ST=Beijing; L=Beijing; street=NoWhere Road 9+3/4 Site Corner; postalCode=061219; O=Ryan Ark Center; CN=ArkRootCA
* SSL certificate verify ok.
< HTTP/2 200
< content-type: text/plain; charset=utf-8
hello double validate https

关键注意事项

  1. 根证书安全:根证书私钥必须严格保护,泄露会导致整个CA体系失效
  2. 证书有效期:注意监控证书有效期,及时续签
  3. 客户端部署:双端认证需要预先在客户端安装CA根证书
  4. 浏览器信任:如需浏览器信任,需手动导入根证书到受信任的根证书颁发机构存储区

高级应用场景

  1. 企业内网安全:为内部系统(邮箱、ERP等)签发专用证书
  2. 微服务认证:服务间通信使用双向TLS认证
  3. 设备认证:为IoT设备签发客户端证书实现安全接入

通过这套自建CA系统,可以构建完整的企业级证书管理体系,大幅提升系统安全性同时降低证书成本。

自建CA证书权威指南 自建CA的意义 成本节约 :商业SSL证书每年费用约1000元/域名,自建CA可大幅降低证书成本 安全性增强 : 浏览器默认不信任自建CA证书,形成天然访问屏障 可实现双端证书认证,必须同时拥有CA根证书和客户端证书才能访问 灵活扩展 : 可自定义实现ACME协议分发证书 可添加各种自定义功能 企业应用 :提升内部系统安全等级的基础设施 技术实现 使用Go语言实现,核心依赖: crypto/rsa :生成RSA公钥私钥对 crypto/x509 :生成证书及相关文件 cobra :命令行框架 工具使用指南 1. 环境准备 2. 生成根证书 输出示例: 3. 签发网站证书 参数说明: --type site :签发网站证书 --common :通用名称(CN) --email :联系邮箱 --ip :证书包含的IP地址 --site :证书包含的域名(支持通配符) 输出示例: 4. 签发客户端证书(用于双端认证) 参数说明: --type client :签发客户端证书 --withp12 :生成.p12格式证书 --password :设置.p12文件密码 输出示例: 5. 启动双端认证测试站点 输出示例: 6. 测试双端认证 成功响应示例: 关键注意事项 根证书安全 :根证书私钥必须严格保护,泄露会导致整个CA体系失效 证书有效期 :注意监控证书有效期,及时续签 客户端部署 :双端认证需要预先在客户端安装CA根证书 浏览器信任 :如需浏览器信任,需手动导入根证书到受信任的根证书颁发机构存储区 高级应用场景 企业内网安全 :为内部系统(邮箱、ERP等)签发专用证书 微服务认证 :服务间通信使用双向TLS认证 设备认证 :为IoT设备签发客户端证书实现安全接入 通过这套自建CA系统,可以构建完整的企业级证书管理体系,大幅提升系统安全性同时降低证书成本。