一、CSR是什么
CSR(Certificate Signing Request),即证书签名请求,是申请数字证书时提交给CA(证书颁发机构)的文件,包含申请者的公钥信息(使用了相应的私钥进行签名)和身份信息(如名称、组织、国家/地区等)。
二、CSR包含的信息
CSR包含3部分,证书请求信息、签名算法和签名
(1)证书请求信息(Certificate Request Info)
① Version
例如0x0 - CSR version 1 - Only version in use
② Subject DN (distinguished name,识别名)
各字段例如:
CN = GeoTrust CN RSA CA G1(Common Name,证书通用名称);
OU = www.digicert.com(Organization Unit,所在组织处理证书的部门);
O = DigiCert Inc(Organization,组织名);
C = US (Country,国家);
S = XX (State,省);
L = xx (Locality,地区)
CA会将这些表明身份的信息导入到证书中(解释了为什么证书里会有个人信息,因为这些信息在CSR中),CA 将自己的 DN 作为证书颁发者。
③ 公钥(Public Key)
公钥是用来加密的,私钥是用来解密的, 在ssl握手中,对方通过之前取得的证书中的公钥对数据进行加密,我方通过自己保留的私钥进行解密。
上图展示了公钥的信息,使用的是RSA 2048,但一些 CA,包括 GlobalSign,支持更大的密钥大小(例如 RSA 4096+)或 ECC 密钥。
④属性(Attributes)
CSR里还包含可选、附加的CSR功能,例如
延期请求(extension request):证书延期;
密码(challenge password):用于向 CA 请求管理员行为,限制了谁可以要求 CA 撤销证书(用于保护私钥和证书签名请求,当使用该证书时,可能需要输入这个密码来解锁密钥)。
可能还有别的功能,以上是最主要的。
三、CSR样例(以pem格式为例)
CSR文件一般以“-----BEGIN CERTIFICATE REQUEST-----”开头,以“-----END CERTIFICATE REQUEST-----”结尾。
四、如何创建CSR
笔者参照FreeSSL.cn的站点,罗列出3种生成CSR的方式,读者可更具需求使用。
1、浏览器生成
这种最简单,在该站点申请90天免费单域名证书的时候,选择“浏览器生成”,无需自己操作
2、离线生成
通过调用CMlLte客户端,离线生成CSR,可实现私钥本地加密存储,更加安全,详情参见CMLite文档。
3、粘贴CSR
选择CSR在线生成工具(推荐使用MySSL.com的CSR在线生成工具)生成CSR文件
按照需要的证书类型选择如SSL证书,填好相关字段信息后,点击生成,可得到CSR文件和私钥的KEY文件。
感谢您的阅读~~~
参考文献
1、网站:Practical Networking.net:Practical TLS
2、网站:www.freessl.cn
3、网站:www.myssl.com