build csr file

制作CSR文件

Posted by minicool on March 15, 2018

CSR是Certificate Signing Request的英文缩写,即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。

生成csr准备

生成CSR文件时,一般需要输入以下信息(中文需要UTF8编码): Organization Name(O):申请单位名称法定名称,可以是中文或英文 Organization Unit(OU):申请单位的所在部门,可以是中文或英文 Country Code(C):申请单位所属国家,只能是两个字母的国家码,如中国只能是:CN State or Province(S):申请单位所在省名或州名,可以是中文或英文 Locality(L):申请单位所在城市名,可以是中文或英文 Common Name(CN):申请SSL证书的具体网站域名

申请方式

openssl 申请

openssl req -new -nodes -sha256 -newkey rsa:2048 -keyout myprivate.key -out mydomain.csr

-new 指定生成一个新的CSR,nodes指定私钥文件不被加密, sha256 指定摘要算法,keyout生成私钥, newkey rsa:2048 指定私钥类型和长度,最终生成CSR文件mydomain.csr。

keytool -genkey -alias mycert -keyalg RSA -keysize 2048 -keystore ./mydomain.jks

keyalg是密钥类型,必须是RSA, keysize是密钥长度为2048, alias 是证书别名可自定义, keystore是证书文件保存路径。

cfssl 申请

纯文本私钥快速配置一个内部CA

csr_ca.json 通过配置文件描述csr { “CN”: “My Awesome CA”, “key”: { “algo”: “rsa”, “size”: 2048 }, “names”: [ { “C”: “US”, “L”: “San Francisco”, “O”: “My Awesome Company”, “OU”: “CA Services”, “ST”: “California” } ] }

cfssl gencert -initca csr_ca.json cfssljson -bare ca

该命令会生成运行CA所必需的文件ca-key.pem(私钥)和ca.pem(证书),还会生成ca.csr(证书签名请求),用于交叉签名或重新签名。

config_ca.json { “signing”: { “default”: { “auth_key”: “key1”, “expiry”: “8760h”, “usages”: [ “signing”, “key encipherment”, “server auth” ] } }, “auth_keys”: { “key1”: { “key”: <16 byte hex API key here>, “type”: “standard” } } }

该策略指定了证书有效期(1年)、用途(服务器验证等)以及一个随机生成的私有验证密钥。该密钥可以防止未经授权的机构请求证书。

执行下面的命令,启动CA服务:

$ cfssl serve -ca-key ca-key.pem -ca ca.pem -config config_ca.json