← 中文资源

简体中文版本

用 OpenSSL 生成 CSR 与私钥

创建私钥、生成主体与 SAN 正确的 CSR、先校验再提交,并妥善保护私钥以便顺利签发证书。

阅读英文原文

概述

CSR 是向 CA 申请证书的公开请求,私钥绝不能包含其中或外传。常见错误是漏填 SAN 或私钥权限过松,前者导致证书不覆盖主机名,后者直接暴露密钥。

关键步骤

  1. 生成现代私钥并设置严格的权限。
  2. 生成带主体与列出所有主机名的 SAN 扩展的 CSR。
  3. 发送前校验 CSR 内容与签名。
  4. 提交 CSR 给 CA,绝不外传私钥。

验证

  • CSR 主体与 SAN 覆盖全部所需主机名。
  • 私钥权限为 600 且非全局可读。
  • 校验命令确认 CSR 完整。
  • 签发的证书链在服务器上可正常握手。

注意事项

  • CSR 只含公开信息,私钥绝不能包含或传输。
  • SAN 语法错误会造成覆盖缺口,且只在连接时才暴露。

适用范围

本条目围绕「用 OpenSSL 生成 CSR 与私钥」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。

# san.cnf
[req]
distinguished_name = dn
req_extensions = v3_req
[v3_req]
subjectAltName = @alt
[alt]
DNS.1 = app.example.com
DNS.2 = www.app.example.com
# command
openssl req -new -newkey rsa:3072 -nodes -keyout app.key \
  -config san.cnf -out app.csr
chmod 600 app.key