在 Linux 下使用 OpenSSL 生成证书,常见有几种场景。下面按由简到繁给你说明,基本都能直接用。
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:自签名证书✅ 适合:
# 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 私钥
openssl genrsa -out ca.key 2048
# CA 自签名证书
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt
# 服务器私钥
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
✅ 适合:
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
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 / 双向认证),我可以给你定制命令。