温馨提示×

linux openssl怎样生成证书

小樊
66
2026-09-10 13:05:21
栏目: 云计算

在 Linux 下使用 OpenSSL 生成证书,常见有几种场景。下面按由简到繁给你说明,基本都能直接用。


一、生成自签名证书(最常用,测试/内部用)

1️⃣ 一条命令生成(推荐)

openssl req -x509 -newkey rsa:2048 -nodes \
  -keyout key.pem -out cert.pem \
  -days 365 \
  -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/CN=example.com"

生成文件:

  • key.pem:私钥
  • cert.pem:自签名证书

✅ 适合:

  • HTTPS 本地测试
  • 内部系统
  • 开发环境

2️⃣ 分步生成(更清晰)

# 1. 生成私钥
openssl genrsa -out key.pem 2048

# 2. 生成证书请求(CSR)
openssl req -new -key key.pem -out csr.pem

# 3. 自签名
openssl x509 -req -in csr.pem -signkey key.pem -out cert.pem -days 365

二、生成 CA 并签发证书(模拟真实环境)

1️⃣ 创建根 CA

# CA 私钥
openssl genrsa -out ca.key 2048

# CA 自签名证书
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt

2️⃣ 生成服务器证书

# 服务器私钥
openssl genrsa -out server.key 2048

# 服务器 CSR
openssl req -new -key server.key -out server.csr

# 用 CA 签发
openssl x509 -req -in server.csr \
  -CA ca.crt -CAkey ca.key -CAcreateserial \
  -out server.crt -days 365 -sha256

✅ 适合:

  • 内网 HTTPS
  • 微服务
  • 模拟生产环境

三、生成带 SAN(多域名/IP)的证书

1️⃣ 创建配置文件 san.cnf

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = example.com
DNS.2 = www.example.com
IP.1  = 192.168.1.100

2️⃣ 生成证书

openssl req -x509 -newkey rsa:2048 -nodes \
  -keyout key.pem -out cert.pem -days 365 \
  -config san.cnf -extensions v3_req

四、查看证书信息

openssl x509 -in cert.pem -noout -text

五、常见用途速查

用途 命令
Nginx HTTPS cert.pem + key.pem
双向认证 CA + client cert
Docker 挂载 ca.crt
curl 测试 curl -k 或 --cacert ca.crt

如果你有具体使用场景(Nginx / Kubernetes / 内网 HTTPS / 双向认证),我可以给你定制命令。

0 踩