openssl生成代码签名证书(中间证书篇)
文章目录
EVRootCA,中间证书.
实际上上RootCA可以直接颁发最终用户证书的,不需要经过经销商EVRootCA.
但是这个情况在实际情况中不常见.
他们有根证书的厂商也会用中间证书给你颁发用户证书的.
配置cnf文件
也是拷贝openssl默认的cnf文件.
我命名为inter.cnf (捂脸🤦,'中间的'那个英文太长我记不住....)
在cnf中新增
[ v3_inter_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true, pathlen:0
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
extendedKeyUsage = critical,serverAuth,clientAuth,codeSigning,timeStamping,emailProtection,OCSPSigning,ipsecIKE,msCodeInd,msCodeCom,msCTLSign,msEFS
#authorityInfoAccess = OCSP;URI:http://ocsp.getce.cn
#authorityInfoAccess = OCSP;URI:http://localhost:9999
#crlDistributionPoints=URI:https://crl.getce.cn/static/ca_x509/ca.crl
注释掉的几行是指定CRL 吊销列表.以及OCSP证书服务器状态.非必须,后面我说OCSP的时候会补充说明.
subjectKeyIdentifie和authorityKeyIdentifier不作介绍.(我也没研究,就当它是标准格式.)
basicConstraints
还是补充下,表明了CA:true,就能用它给下级颁发证书.
证书不单是像大家理解的只有3级,只是多数情况是3级.
keyUsage
这个说过,基本上CA证书都是这种表述.算是比较高权限的一种组合.直接抄就可以.
extendedKeyUsage
扩展证书用法
用法 | 说明 | 补充 |
serverAuth clientAuth |
基本理解为网站服务器用的. | SSL证书 |
codeSigning | 代码签名证书. | 除了EXE,DLL之外还能安卓,,ios,mac,浏览器扩展很多地方. |
timeStamping | 时间戳服务器用法 | 对代码签名附加时间戳用. |
emailProtection | 邮箱签名 | |
OCSPSigning | OCSP状态服务器证书 | |
ipsecIKE | 通讯用,但是可以基本理解为VPN用的加密 | |
msCodeInd msCodeCom msCTLSign msEFS |
微软几个专用证书,很少用. |
生成CSR和KEY
openssl req -passout 'pass:123456' -newkey rsa:4096 -keyout ./inter/inter.key -out ./inter/inter.csr -config ./inter.cnf -extensions v3_inter_ca
生成的key是有密码123456的.
[可选]删掉KEY密码
openssl rsa -in ./inter/inter.key -out ./inter/inter.key
会提示你输入原来key密码,前面指定了123456
用RootCA签发证书.
faketime '2000-01-01 00:00:01' openssl x509 -req -sha384 -days 36524 -CAcreateserial -CA ./ca/CA.crt -CAkey ./ca/CA.key -in ./inter/inter.csr -out ./inter/inter.crt -extfile ./inter.cnf -extensions v3_inter_ca
使用faketime伪造系统时间. 签发一个100年的证书.
加密为sha384,可以指定sha1或者sha256这个不影响给下级证书加密的复杂度的.
你就算是sha1加密,也可以给下级颁发sha256以及以上复杂的证书的.
验证证书
直接验证
用RootCA证书验证下
openssl verify -CAfile ./ca/CA.crt ./inter/inter.crt
提示OK就是对的了.
OCSP服务器验证
这个后面补充.
安装证书
如果手动安装了根证书的情况,这个证书是有效的.
但是如果你想要用这个中间证书,继续颁发用户证书,那么这个也要加入系统证书列表.
在windows下和根证书安装是一样的,只不过安装到 "中间证书颁发机构" .
[可选]合并证书
合并中间证书和根证书.制作中间链证书.
实际上多数情况可以直接用中间证书,当中间链证书
暴力点就是直接合并文件.
echo 命令合并也可以,当然也可以直接编辑.
中间证书在上面,根证书在下面.
[可选]生成吊销列表
一般自签的证书用不上,这里只是补充下.
openssl ca -config ./inter.cnf -gencrl -keyfile ./inter/inter.key -cert ./inter/inter.crt -out ./inter/inter.crl
执行命令前也要弄个demoCA的目录,还有两个文件.
这个目录名字可以在cnf文件中修改.
这里和上一个篇(RootCA篇)博文中有说明,这里不再说了.
参考
研究openssl过程中参考了大量的博文,资料,wiki.
在RootCA篇已经列举,此处不再重复.