什么是CSR以及如何创建?完整的分步指南
使用HTTPS保护您的网站已不再是可选项——它是用户信任、数据保护和搜索引擎排名的基本要求。每次SSL/TLS证书颁发的核心是一个关键但常被误解的组件:证书签名请求(CSR)。无论您是开发人员、系统管理员还是网站所有者,了解如何正确生成和提交CSR可以为您节省数小时的故障排查时间,并确保您的网站得到妥善保护。
在本综合指南中,我们将详细解释CSR是什么、为何重要,并带您了解多种创建方法——包括OpenSSL、cPanel和IIS。
什么是CSR(证书签名请求)?
A 证书签名请求(CSR)是一段Base64编码的文本,您在服务器上生成后提交给证书颁发机构(CA)——例如Let’s Encrypt、DigiCert或Sectigo——以申请SSL证书。CA读取CSR中嵌入的信息,并使用这些信息颁发数字签名证书,从而为您的域名启用HTTPS。
可以将CSR视为一份正式申请表:它告诉CA您是谁、您想保护哪个域名,并提供将嵌入最终证书的加密公钥。
CSR包含哪些信息?
标准CSR包含以下字段:
| 字段 | 描述 | 示例 |
|---|---|---|
| 通用名称(CN) | 要保护的完全限定域名(FQDN) | www.example.com |
| 组织名称(O) | 公司或个人的法定名称 | Example Corp Ltd |
| 组织单位(OU) | 部门或分部(可选) | IT Department |
| 所在地(L) | 组织所在城市 | New York |
| 州/省(ST) | 完整的州或省名称 | New York |
| 国家(C) | 两字母ISO国家代码 | US |
| 电子邮件地址 | 联系邮箱(可选) | admin@example.com |
| 公钥 | 用于加密的加密密钥 | RSA 2048位或更高 |
> 重要提示:CSR不包含您的私钥。私钥与CSR一同生成,但必须始终安全存储在您的服务器上,绝不与任何人共享——包括CA。
为什么CSR很重要?
了解CSR的作用有助于理解为什么每次SSL证书颁发都从这一步骤开始。
1. 它启动SSL证书请求
没有CSR,CA就无法知道您想保护哪个域名、谁拥有它,或者要在证书中嵌入哪个公钥。CSR是启动整个证书颁发工作流程的正式机制。
2. 它建立加密基础
CSR包含您的公钥,它与您的私钥在数学上配对。这两个密钥共同构成SSL/TLS的非对称加密基础。当浏览器连接到您的服务器时,它使用公钥(来自证书)加密数据,您的服务器使用私钥解密——确保第三方无法拦截通信。
3. 它实现身份验证
根据您申请的SSL证书类型,CA将使用CSR中的信息执行不同级别的身份验证:
- 域名验证(DV):CA仅验证您控制该域名。快速且自动化。
- 组织验证(OV):CA除验证域名控制权外,还验证您组织的法律存在。
- 扩展验证(EV):最严格的审查——CA验证法律身份、实际地址和运营状态。
如果您运营的是企业网站或电子商务平台,选择正确的验证级别至关重要。您可以浏览AlexHost的SSL证书系列,找到最符合您安全需求的选项。
如何创建CSR:分步说明
创建CSR涉及两个主要步骤:生成私钥,然后使用该密钥生成CSR文件。以下介绍最常见的方法。
方法1:使用OpenSSL(Linux、macOS、Windows)
OpenSSL是生成CSR最广泛使用且普遍可用的工具。它适用于Linux服务器、macOS和Windows(需安装OpenSSL)。
#### 步骤1:生成私钥
打开终端(或Windows上的命令提示符)并运行以下命令:
openssl genrsa -out private.key 2048此命令的作用:
genrsa— 生成RSA私钥-out private.key— 将密钥保存到名为private.key的文件2048— 指定密钥长度(位数)(2048位是最低推荐值;使用4096位可获得更高安全性)
> 安全提示:将private.key存储在安全的、访问受限的目录中。切勿将其上传到公共位置或通过电子邮件共享。
#### 步骤2:生成CSR
创建私钥后,运行以下命令生成CSR:
openssl req -new -key private.key -out yourdomain.csrOpenSSL将提示您以交互方式填写CSR字段:
Country Name (2 letter code) [AU]: US
State or Province Name (full name) [Some-State]: California
Locality Name (eg, city) []: San Francisco
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Example Corp Ltd
Organizational Unit Name (eg, section) []: IT Department
Common Name (e.g. server FQDN or YOUR name) []: www.example.com
Email Address []: admin@example.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:> 专业提示:除非您的CA明确要求,否则将”challenge password”留空。在大多数现代工作流程中,它增加了复杂性但没有实质性的安全益处。
完成后,您的CSR将保存到yourdomain.csr。您可以使用以下命令查看其内容:
openssl req -text -noout -verify -in yourdomain.csr#### 步骤3:在单个命令中同时生成密钥和CSR
为提高效率,您可以将步骤1和步骤2合并为一个命令:
openssl req -new -newkey rsa:2048 -nodes -keyout private.key -out yourdomain.csr这将同时生成私钥和CSR,并提示您输入相同的字段信息。
#### 步骤4:将CSR提交给您的证书颁发机构
在文本编辑器中打开yourdomain.csr文件,复制其全部内容——包括-----BEGIN CERTIFICATE REQUEST-----和-----END CERTIFICATE REQUEST-----行。在购买或续期SSL证书时,将其粘贴到CA的提交表单中。
#### 步骤5:保护您的私钥
收到并安装SSL证书后,确保private.key:
- 以受限文件权限存储(Linux上为
chmod 600 private.key) - 在安全的加密位置备份
- 绝不通过不安全的渠道传输
如果私钥丢失或泄露,您必须生成新的密钥对、创建新的CSR并申请重新颁发证书。
方法2:使用cPanel(共享主机和VPS)
如果您的托管环境使用cPanel,您可以直接通过图形界面生成CSR——无需命令行经验。这对于使用共享虚拟主机或带cPanel的VPS的用户来说非常理想。
步骤:
- 登录您的cPanel账户。
- 导航到安全部分,点击SSL/TLS。
- 在证书签名请求(CSR)下,点击“生成、查看或删除SSL证书签名请求。”
- 填写CSR表单字段:
- 密钥大小:选择2048(推荐)或4096位
- 域名:输入您的FQDN(例如,
www.example.com) - 城市、州、国家:您组织的位置详情
- 公司和部门:法定组织名称和部门
- 电子邮件:联系邮箱地址
- 点击生成。
- cPanel将显示您的CSR。复制完整文本并提交给您的CA。
> cPanel还会自动存储您的私钥并将其与CSR关联,从而简化后续的证书安装步骤。
方法3:在Windows Server上使用IIS
对于在带有Internet Information Services(IIS)的Windows Server上管理网站的管理员,IIS管理器提供了内置的CSR生成向导。
步骤:
- 打开IIS管理器(
inetmgr)。 - 在左侧的连接面板中,选择您的服务器名称(而非特定站点)。
- 在中间面板中,双击服务器证书。
- 在右侧的操作面板中,点击创建证书请求…
- 填写可分辨名称属性:
- 通用名称、组织、组织单位、城市、州、国家
- 点击下一步。
- 在加密服务提供程序属性页面:
- 加密服务提供程序:Microsoft RSA SChannel Cryptographic Provider
- 位长度:2048(最低)或4096
- 点击下一步,选择保存CSR的文件路径,然后点击完成。
- 打开保存的
.txt文件,复制其内容并提交给您的CA。
> 注意:IIS在内部存储待处理的私钥。在成功安装颁发的证书之前,请勿从IIS管理器中删除待处理的请求。
CSR生成:方法快速比较
| 方法 | 平台 | 技能水平 | 最适合 |
|---|---|---|---|
| OpenSSL CLI | Linux、macOS、Windows | 中级 | 开发人员、系统管理员、VPS用户 |
| cPanel GUI | 任何基于cPanel的主机 | 初级 | 共享主机、托管VPS用户 |
| IIS管理器 | Windows Server | 中级 | 基于Windows的Web服务器 |
常见CSR错误及避免方法
即使是经验丰富的管理员在生成CSR时也偶尔会出错。以下是最常见的陷阱:
- 使用错误的通用名称:CN必须与您想保护的域名完全匹配。对于通配符证书,使用
*.example.com。对于多域名(SAN)证书,您CA的界面将单独处理其他域名。
- 缩写州/省字段:始终拼写完整名称(例如,”California”而非”CA”)。某些CA会拒绝缩写条目。
- 丢失私钥:CSR和私钥是配对的。如果在安装证书之前丢失私钥,您需要重新开始。
- 使用低于2048位的密钥大小:现代CA和浏览器要求最低2048位RSA密钥。使用更小的密钥将导致拒绝或浏览器警告。
- 重复使用旧CSR:每次新的证书请求或续期时,始终生成新的CSR。重复使用CSR可能带来安全风险,且某些CA可能会拒绝。
CSR之后:安装您的SSL证书
一旦您的CA验证了CSR并颁发了证书,您将收到一个或多个.crt或.pem文件。安装步骤因平台而异:
- Linux上的Apache/Nginx:在虚拟主机配置中配置证书文件路径
- cPanel:使用SSL/TLS管理器将证书与匹配的私钥一起安装
- IIS:在IIS管理器中使用”完成证书请求”导入颁发的证书
- Plesk / DirectAdmin:使用内置的SSL证书管理界面
对于使用VPS主机或独立服务器的用户,您拥有完整的root访问权限,可以直接通过命令行或您首选的控制面板管理证书安装。
关于CSR的常见问题
我可以将一个CSR用于多个证书吗?
技术上可以,但强烈不建议这样做。每次证书请求都应使用新生成的CSR和密钥对,以保持适当的安全卫生。
CSR的有效期是多长?
CSR本身不会过期,但由其颁发的证书会过期(现代SSL证书通常为1年)。每次续期证书时,您应该生成新的CSR。
CSR和证书有什么区别?
CSR是您获取证书的*请求*。证书是CA颁发的*文件*,用CA的私钥签名,受浏览器信任。
Let’s Encrypt需要CSR吗?
Let’s Encrypt的ACME协议(由Certbot等工具使用)在后台自动处理CSR生成。但是,如果需要,您也可以提供自定义CSR。
结论
证书签名请求(CSR)是为您的网站获取SSL/TLS证书的必要第一步。它将您的公钥和组织身份打包成标准化格式,证书颁发机构使用该格式颁发受信任的证书——启用HTTPS、加密用户数据并建立访客信任。
无论您是在Linux VPS上使用OpenSSL、在共享主机计划上使用cPanel图形界面,还是在Windows Server上使用IIS管理器,该过程都遵循相同的基本原则:生成安全的私钥、使用准确信息创建CSR、将其提交给CA,并在整个过程中保护您的私钥。
准备好保护您的网站了吗?浏览AlexHost的SSL证书,提供适合各种项目规模和预算的选项——从基本域名验证到企业环境的扩展验证证书。将您的SSL证书与可靠的VPS主机或独立服务器配合使用,确保您的基础设施与您的安全态势同样稳健。
