CSR(证书签名请求)是数字证书签发过程中不可或缺的组成部分。它向证书颁发机构(CA)提供足够的用户信息,以便 CA 确认用户身份并签发一张经过签名的证书,从而实现客户端与服务器之间的安全通信。理解 CSR 的作用、内容以及生成流程,有助于确保证书签发过程顺利且安全。

什么是 SSL 中的 CSR?

CSR(Certificate Signing Request,证书签名请求)是一个经过编码的文件,其中指定了公钥以及一些能够唯一标识贵公司域名的信息。CA 利用这些信息为您的网站生成 SSL/TLS 证书,从而启用指向您站点的加密流量。

CSR 文件中包含哪些信息?

CSR 文件包含多项详细信息,其中最重要的是与您的企业相关的信息,这些信息帮助证书颁发机构验证您的身份与合法性。文件还包含公钥,以及密钥的类型与长度——所有这些细节对于证书签发流程都至关重要。

CSR 请求中的企业信息

证书签名请求(CSR)应包含贵公司的全部信息,例如公司名称、所在城市、州/省以及国家。此外还需提供电子邮件地址、域名,以及您希望用 SSL/TLS 证书保护的其他域名。CA 将使用这些信息来验证您的身份。

当您为证书创建 CSR 时,必须填写以下信息:

信息字段说明示例
通用名称(Common Name)Web 服务器的完全限定域名(FQDN),必须与浏览器中输入的域名一致,否则浏览器会提示名称不匹配错误。www.example.com
shop.example.com
*.example.com
组织(Organization)组织的完整法定名称,需包含 LTD、Corp、Inc.、LLC 等后缀,不允许使用缩写。BusinessName LLC
部门(Department)负责处理证书的组织单元。IT Department
城市/地区(City/Locality)组织所在城市的名称。Forest Hills
州/省/地区(State/County/Region)组织所在州或地区的名称。New York
国家(Country)组织所在国家的 ISO 代码。US
电子邮件地址(Email address)用于联系的组织有效邮箱。admin@example.com

公钥的作用

公钥本质上是一个用于加密数据的密码学数值。CSR 中包含您的公钥,CA 会获取该公钥并用于生成您的证书,同时验证 CSR 中的签名。公钥通常使用 RSA 等密码学算法生成,RSA 广泛用于公钥与私钥。密钥长度以比特(bit)为单位,反映了加密的强度——密钥越长,安全性越高。最常见的私钥长度为 RSA 2048,但也可选择 RSA 3072 或 RSA 4096。

密钥类型及其长度

CSR 应包含密钥类型(RSA 或 DSA)以及所用密钥的长度。最常用的密钥长度为 2048 位与 4096 位。私钥用于解密由公钥加密的信息。随着计算能力的提升和技术演进,RSA 密钥长度也在不断变化。

如何创建证书签名请求(CSR)?

生成 CSR 需要几个步骤。首先,创建私钥。私钥相当于另一把用于解锁/解密信息的钥匙,请妥善保管,因为它可用于解密指向您网站的流量。

私钥生成

公钥通过对私钥进行数学运算派生而来,二者组合并定义为"密钥对"(key pair)。私钥包含解密由公钥加密信息所需的数据;反之,公钥用于校验由私钥生成的电子签名。大多数 Web 服务器与运行环境(如 IIS、OpenSSL、cPanel)都可使用。系统会创建一个理想长度为 2048 位的私钥,并用这把特殊密钥来生成 CSR。

CSR 生成

私钥创建完成后,即可用它生成 CSR 文件。如前所述,CSR 包含域名、地区、城市、州、邮箱、组织等信息,通常采用 Base-64 编码。此外,OpenSSL、IIS、cPanel 等服务器均允许通过其命令行工具生成 CSR 文件。

CSR 提交

CSR 创建完成后,需要记住几个关键点:最终 CSR 应发送至 CA 进行验证。当您创建好 CSR 后,证书颁发机构(CA)会在完成所有必要流程后,为您的网站签发 SSL 证书。

CSR 在证书申请流程中的用途

获得 CSR 后,您需要将其提供给 SSL 证书服务商。在配置页面填写完所有必填信息后,需确认域名所有权。如需进一步验证,证书颁发机构会核查企业注册信息及相关文件,并进行电话核实。之后,CA 才会签发 SSL 证书。具体的安装方式取决于您所使用的服务器类型与软件。

CSR 代码长什么样?

CSR 采用 Base64 格式的 PEM 编码,包含在"—–BEGIN CERTIFICATE REQUEST—–"与"—–END CERTIFICATE REQUEST—–"之间的内容。如果您已在服务器上创建了 CSR,并生成了如下文件,请将其保存在文本编辑器中备用。

关于 Base-64

Base-64 是一种用于将二进制数据表示为 ASCII 文本的标准编码类型,它能够将二进制数据转换为可在互联网上读取和传输的形式。创建 CSR 时,必须将其编码为 Base64,因为 CA 需要处理该数据。

关于 ASCII

ASCII 是一种标准编码类型,用于将二进制数据表示为 ASCII 文本(其名称即为 Base-64)。字母表中的所有字符都被分配了唯一的数字编号。

结语

希望上述内容能帮助您理解 CSR 的概念。SSL 证书需要基于 CSR 文件在您的网站上完成配置。CSR 包含可用于生成证书的信息,随后这些信息将提交给 CA 以获取证书。但在获得证书之后,您必须将其安装到服务器上。