CSR的全称是Certificate Signing Request. 是我们在申请Https证书是向CA所提供的一杯申请书。其内部储存了我们申请证书所需要的基本信息。它是一个经过Base64编码的纯文本文件。一般长这个样子:
-----BEGIN CERTIFICATE REQUEST----- MIIByjCCATMCAQAwgYkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh MRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgSW5jMR8w HQYDVQQLExZJbmZvcm1hdGlvbiBUZWNobm9sb2d5MRcwFQYDVQQDEw53d3cuZ29v Z2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEApZtYJCHJ4VpVXHfV IlstQTlO4qC03hjX+ZkPyvdYd1Q4+qbAeTwXmCUKYHThVRd5aXSqlPzyIBwieMZr WFlRQddZ1IzXAlVRDWwAo60KecqeAXnnUK+5fXoTI/UgWshre8tJ+x/TMHaQKR/J cIWPhqaQhsJuzZbvAdGA80BLxdMCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4GBAIhl 4PvFq+e7ipARgI5ZM+GZx6mpCz44DTo0JkwfRDf+BtrsaC0q68eTf2XhYOsq4fkH Q0uA0aVog3f5iJxCa3Hp5gxbJQ6zV6kJ0TEsuaaOhEko9sdpCoPOnRBm2i/XRD2D 6iNh8f8z0ShGsFqjDgFHyF3o+lUyj+UC6H1QW7bn -----END CERTIFICATE REQUEST-----
这段纯文本包含了如下信息:
名称 | 描述 | 示例 |
---|---|---|
Common Name | 证书所绑定的域名 |
*.google.com |
Organization | 证书所属组织 | Google Inc. |
Organizational Unit | 证书所属组织的部门 | Information Technology IT Department |
City/Locality | 组织所属城市 | Mountain View |
State/County/Region | 组织所在州,省或者区域 | California |
Country | 组织所在国家 | US GB |
Email address | 组织联系方式 | webmaster@google.com |
Public Key | 最重要的公钥,https的核心功能就是使用证书中包含的公钥来解密数据。所以公钥信息必须通过CSR文件提交给CA。 然后CA用其根证书私钥进行签名后生成证书。 |
CSR的生成
我们可以通过IIS提供的生成CSR的功能来生成,也可以通过专业的openssl的工具生成。
openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key
CSR的验证
我们可以通过openssl工具对CSR进行验证
openssl req -in mycsr.csr -noout -text
CA在收到我们提交的CSR文件后,会把这些信息使用其根证书对应私钥签名后生成对应的证书。