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篇已经列举,此处不再重复.