温馨提示×

Linux openssl能生成CSR吗

小樊
46
2026-08-25 07:35:37
栏目: 云计算

可以的,Linux 下的 OpenSSL 完全可以用来生成 CSR(证书签名请求)。下面给你几种常见用法示例。


一、生成私钥 + CSR(最常用)

1️⃣ 生成 RSA 私钥 并同时生成 CSR

openssl req -new -newkey rsa:2048 -nodes \
  -keyout server.key \
  -out server.csr

说明:

  • rsa:2048:2048 位 RSA 私钥
  • -nodes:私钥不加密(否则每次使用都要输入密码)
  • server.key:私钥文件(一定要保密)
  • server.csr:生成的 CSR 文件

执行后会提示输入:

  • Country Name (CN)
  • State / Province
  • Locality Name
  • Organization Name
  • Organizational Unit
  • Common Name(最重要):域名(如 www.example.com
  • Email Address

2️⃣ 只生成 CSR(私钥已存在)

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

二、无交互生成 CSR(自动化推荐 ✅)

openssl req -new \
  -key server.key \
  -out server.csr \
  -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/OU=IT/CN=www.example.com"

三、生成带 SAN(多域名 / 通配符)的 CSR(进阶)

1️⃣ 准备一个 san.cnf

[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name

[req_distinguished_name]

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = www.example.com
DNS.2 = example.com
DNS.3 = *.example.com

2️⃣ 生成 CSR

openssl req -new \
  -key server.key \
  -out server.csr \
  -config san.cnf

现在 CA 基本都要求 CSR 带 SAN,否则会被拒绝


四、查看 CSR 内容

openssl req -in server.csr -noout -text

五、常见用途总结

场景 是否适合
申请 Let’s Encrypt ❌(用 certbot)
向企业 CA / 商业 CA 申请证书
内网 / 私有 CA
需要多域名 ✅(SAN)

如果你愿意,可以告诉我:

  • 公网证书 还是 内网/私有 CA
  • 单域名 / 多域名 / 通配符
  • 想不想 私钥加密

我可以帮你直接生成一套完全可用的命令

0