温馨提示×

Linux openssl如何生成CA

小樊
35
2026-08-25 07:51:41
栏目: 云计算

下面给你一个在 Linux 下使用 OpenSSL 生成 CA(Certificate Authority,证书颁发机构) 的完整示例,适合本地测试或内网使用。


一、准备目录结构(推荐)

mkdir -p ~/myca/{certs,crl,newcerts,private}
cd ~/myca
touch index.txt
echo 1000 > serial

说明:

  • private/:存放 CA 私钥(一定要保密
  • certs/:存放证书
  • newcerts/:OpenSSL 自动生成的证书副本
  • index.txt:证书数据库
  • serial:证书序列号

二、生成 CA 私钥

openssl genrsa -out private/ca.key 4096

权限保护(强烈建议):

chmod 400 private/ca.key

三、生成 CA 根证书(自签名)

openssl req -x509 -new -nodes \
  -key private/ca.key \
  -sha256 \
  -days 3650 \
  -out ca.crt

会提示输入:

  • Country Name (CN)
  • State
  • Organization
  • Common Name(非常重要,例如:My Root CA

生成后:

  • ca.crt:CA 根证书(可公开)
  • ca.key:CA 私钥(绝不可泄露)

四、验证 CA 证书

openssl x509 -in ca.crt -text -noout

你应该能看到:

Issuer: CN = My Root CA
Subject: CN = My Root CA

五、(可选)使用配置文件生成 CA(更规范)

创建 openssl.cnf

[ ca ]
default_ca = CA_default

[ CA_default ]
dir               = .
certs             = $dir/certs
crl_dir           = $dir/crl
new_certs_dir     = $dir/newcerts
database          = $dir/index.txt
serial            = $dir/serial

private_key       = $dir/private/ca.key
certificate       = $dir/ca.crt

default_days      = 3650
default_md        = sha256
policy            = policy_loose

[ policy_loose ]
countryName             = optional
stateOrProvinceName     = optional
localityName            = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional

生成 CA:

openssl req -new -x509 \
  -key private/ca.key \
  -out ca.crt \
  -days 3650 \
  -config openssl.cnf

六、用 CA 签发服务器证书(常见用途)

1️⃣ 生成服务器私钥

openssl genrsa -out server.key 2048

2️⃣ 生成证书请求(CSR)

openssl req -new -key server.key -out server.csr

⚠️ Common Name 填写域名,如 example.com

3️⃣ CA 签发证书

openssl x509 -req \
  -in server.csr \
  -CA ca.crt \
  -CAkey private/ca.key \
  -CAcreateserial \
  -out server.crt \
  -days 825 \
  -sha256

七、常见用途

  • ✅ HTTPS(Nginx / Apache)
  • ✅ 内网 TLS
  • ✅ 客户端证书认证
  • ✅ 测试环境替代商业 CA

八、注意事项

  • ❌ 不要泄露 ca.key
  • ✅ CA 证书要导入客户端信任库
  • ✅ 生产环境建议用 4096 位 RSAECDSA

如果你需要:

  • ECDSA CA
  • 带 SAN 的证书
  • Nginx / Docker / Kubernetes 使用 CA
  • Windows / Java 信任 CA

可以直接告诉我你的使用场景,我可以给你定制命令。

0