原文同时发布于本人个人博客: https//kutank.com/blog/cert-csr/
简介
CSR 全称 “证书签名请求”(Certificate Signing Request). 本文我们将来详细的学习 CSR 的知识,重点集中在 CSR 所包含的信息,及其意义。
CSR 的作用:
CSR 通常由想要获得 X.509 证书的实体(entity) 创建,然后提交给 CA (Certificate Authority), CA 使用它来为实体创建对应的 X.509 证书.
CSR 组成
CSR 中通常包含三部分:
- 实体的标识名(Distinguished name)
- 实体的公钥(public key)
- 其他有关实体的属性信息
在整个证书体系中,所有格式的证书通常以 ASN.1 的方式编码存储在文件中。
接下来,我们学习一下 CSR 的格式,以及如何使用 ASN.1 进行编码
CertificationRequest
CSR 的所有信息包含在根节点 CertificationRequest 中。 它的格式如下:
CertificationRequest ::= SEQUENCE {
certificationRequestInfo CertificationRequestInfo,
signatureAlgorithm AlgorithmIdentifier{
{
SignatureAlgorithms }},
signature BIT STRING
}
AlgorithmIdentifier {
ALGORITHM:IOSet } ::= SEQUENCE {
algorithm ALGORITHM.&id({
IOSet}),
parameters ALGORITHM.&Type({
IOSet