概述
CSR 是向 CA 申请证书的公开请求,私钥绝不能包含其中或外传。常见错误是漏填 SAN 或私钥权限过松,前者导致证书不覆盖主机名,后者直接暴露密钥。
关键步骤
- 生成现代私钥并设置严格的权限。
- 生成带主体与列出所有主机名的 SAN 扩展的 CSR。
- 发送前校验 CSR 内容与签名。
- 提交 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