CSR解码器

在证书颁发机构签署 TLS 证书之前,您需要向其提交一份证书签名请求(CSR)。它是一段 Base64 数据,包含您希望在证书上显示的主体信息和您的公钥,以及证明您持有对应私钥的签名。此解码器可解析 PEM 格式的 CSR 并显示主体各字段和公钥参数,让您可以在提交给 CA 之前检查通用名称、组织和密钥大小。

如何解码 CSR

  1. 1

    粘贴 CSR

    包含 `-----BEGIN CERTIFICATE REQUEST-----` 和 `-----END CERTIFICATE REQUEST-----` 标记。空白字符可以容忍。

  2. 2

    运行解码器

    请求会被解析,主体各字段和公钥会被读取出来。

  3. 3

    检查输出

    检查通用名称、组织等主体字段,以及密钥的算法和大小。

  4. 4

    根据结果行动

    如果主体或密钥看起来有误,请在提交给 CA 之前重新生成 CSR。

解码器显示什么

CSR 是一种 ASN.1 结构(PKCS #10)。解码器从中读取两项内容:

  • 主体:所请求的区分名称(Distinguished Name)字段,通常包括国家(C)、组织(O)、组织单位(OU)、地区(L)、省/州(ST)和通用名称(CN)。
  • 公钥:算法(RSA、EC、DSA)以及以位为单位的密钥大小。

CSR 内部的签名是向 CA 证明提交方持有对应私钥的依据。本解码器不显示该签名;CA 在处理请求时会验证它。

输出示例

对于典型的域名证书请求,输出如下:

Subject: commonName=www.example.com, organizationName=Example Inc., countryName=US
Key bits: 2048
Key type: RSA

主体中属性的确切名称取决于请求的生成方式。

需再次核对的字段

  • 通用名称(CN):应为主主机名。现代浏览器会忽略CN而仅检查SAN标识符,但许多证书颁发机构仍要求提供有效的CN。
  • 主题备用名称(SAN):列出证书将保护的所有主机名及通配符。浏览器会根据SAN而非CN进行匹配。
  • 国家/地区(C):两位字母的ISO代码(如US、GB、DE),而非完整名称。认证机构会拒绝无效代码。
  • 密钥长度:RSA 2048为最低标准;3072或4096可提供更高安全性。 ECDSA P-256是现代的理想替代方案,且生成的证书体积更小。
  • 签名算法:需使用 SHA-256 或更高版本;SHA-1 已长期被弃用,将不予支持。

关于主题备用名称(SAN)

解码器会显示请求的主体,但不显示 SAN 扩展。浏览器按 SAN 而非 CN 匹配证书;因此如果证书需要覆盖更多主机名,请在生成请求时把它们包含进去,例如:

openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr -addext "subjectAltName=DNS:example.com,DNS:www.example.com"

解码器无法解析 CSR 时

最常见的原因是 PEM 块被截断或损坏:

  • 文本被截断:请重新粘贴完整块,包括两个标记。
  • 被插入了换行:请按生成时的原样粘贴。
  • 内容错误:误粘贴的公钥、证书或私钥无法作为 CSR 解析。

生成匹配的密钥

CSR 始终与私钥一同生成。典型命令如下:

openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr

或者 ECDSA :

openssl req -new -newkey ec:<(openssl ecparam -name prime256v1) -nodes -keyout example.key -out example.csr

妥善保管私钥,若其泄露,证书必须被撤销。

常见问题

CSR仅包含公开信息(公钥、主体、SAN)及签名,可安全地与证书颁发机构共享或直接粘贴至解码器中。必须保密的是对应的私钥。

不能。本解码器接受带 BEGIN/END CERTIFICATE REQUEST 标记的文本 PEM 格式。要使用二进制的 DER 请求,请先将其转换为 PEM,例如使用 openssl req -in request.der -inform DER -out request.pem

不。大多数公共证书颁发机构(如 Let’s Encrypt、DigiCert 和 Sectigo)仅要求提供域名(CN)和系统名称(SAN),而不会考虑域验证证书中的组织(O)、用户组(OU)、位置(L)、服务类型(ST)及证书类型(C)等字段;组织验证证书与扩展验证证书则会分别验证这些字段。

最常见的原因是粘贴的文本被截断或被插入了换行,或者粘贴的是密钥或证书而不是 CSR。请将两个标记之间的完整块重新粘贴。

相关工具

此工具还提供其他语言版本