申请SSL证书时如何确保CSR文件正确生成
申请SSL证书时CSR文件的正确生成要点
CSR(Certificate Signing Request)是SSL证书申请的核心文件,其内容直接决定证书能否正确签发。以下从生成流程、常见错误和验证方法三个层面展开说明。
一、生成前的准备
使用OpenSSL生成CSR时,需确保以下字段准确:
字段 要求 常见错误
CN(Common Name) 必须与域名完全一致 填写IP地址或带www前缀不一致
O(Organization) 与营业执照一致 简写或拼写错误
OU(Organization Unit) 部门名称 留空或随意填写
C(Country) 两位国家代码 填写中文国名
关键原则:域名优先使用证书要保护的那个。 多域名证书的CSR中,CN填主域名,SAN字段补其余域名。
二、标准生成命令
bash
openssl req -new -newkey rsa:2048 -nodes \
-keyout private.key -out request.csr \
-subj "/C=CN/ST=Sichuan/L=Chengdu/O=公司全称/OU=IT部/CN=example.com"
若需指定SAN(Subject Alternative Name),建议先生成配置文件:
ini
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = v3_req
[dn]
C=CN
ST=Sichuan
L=Chengdu
O=公司全称
OU=IT部
CN=example.com
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = example.com
DNS.2 = www.example.com
DNS.3 = api.example.com
再执行:
bash
openssl req -new -key private.key -out request.csr -config san.cnf
三、生成后的验证
不要生成完就直接提交。运行以下命令逐项检查:
bash
openssl req -text -noout -verify -in request.csr
重点确认:
verify OK 出现——说明CSR语法无问题
Subject中CN值 与目标域名逐字符匹配
X509v3 Subject Alternative Name 中包含所有需要保护的域名
私钥与CSR配对:openssl rsa -noout -modulus -in private.key | openssl md5 与 openssl req -noout -modulus -in request.csr | openssl md5,两个MD5值必须一致
四、高频翻车点
CN与浏览器访问域名不一致:证书会被浏览器报错
私钥丢失后重新生成CSR:必须用原私钥,否则证书无法使用
特殊字符未转义:公司名含&、,等符号时,命令行中需加引号或用配置文件
CSR本质上是一份"我是谁、我要保护哪些域名"的声明,字段准确、私钥配对、SAN完整,三者满足即无问题。