研究了下证书在系统的自动信任体系.以及OSCP服务器.

前面几篇研究了CA根证书,中级证书,用户证书的签发.

然后研究了下证书在系统自动信任体系都是OCSP在工作.

 

在系统中证书信任情况

 

已经在系统信任区的就不说了.这里是说,

自己签发的证书.用于了解证书在系统中是任何构建信任的.

 

证书未指定OCSP服务器情况

用户证书, 中级证书,根证书均不被系统信任.

必须手动导入中级证书和根证书到系统中.

用户证书才会被系统信任.

 

指定了OCSP的情况

 

我这里是已经配置了中级证书OCSP服务器/CA根证书的OCSP服务器.

用户证书: 无法将这个证书验证到一个受信任的证书颁发机构.

中级证书被系统自动下载,并自动信任.

根证书,基于安全,即使指定了根证书的OCSP服务器,也不会信任根证书.

 

 

 

手动安装了CA证书的情况

在不需要手动安装中级证书的情况下,只需要安装CA根证书,整个证书就会被系统信任.

 

 

 

 

生成OCSP证书

 

配置文件

 

[ v3_ocsp_ca ]
# Extensions for a typical intermediate CA (`man x509v3_config`).
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = OCSPSigning

 

生成命令

 

#生成一个带密码1234的key,和csr证书请求文件.
openssl req -passout 'pass:1234' -newkey rsa:4096 -keyout ./ocsp/ocsp.key -out ./ocsp/ocsp.csr -config ./ocsp.cnf -extensions v3_ocsp_ca

#转换key,取消key的密码(会让你输入前面的密码1234)
openssl rsa -in ./ocsp/ocsp.key -out ./ocsp/ocsp.key

#伪造时间,并指定CA证书,签发OCSP证书.
faketime '2000-01-01 00:00:01' openssl x509 -req -sha384 -days 36524 -CAcreateserial -CA ./ca/CA.crt -CAkey ./ca/CA.key  -in ./ocsp/ocsp.csr -out ./ocsp/ocsp.crt -extfile ./ocsp.cnf -extensions v3_ocsp_ca

 

架设OSCP服务器

 

启动OSCP服务器

一条命令即可.

指定了OSCP的证书和key密钥,还有ca证书.开放一个9999的端口.

启动需要三个文件.

demoCA/index.txt  索引文件,需要指定,内容为空即可.

demoCA/index.txt.attr  属性文件,不需要指定,但是文件要存在.内容为空即可.

demoCA/crlnumber   证书吊销列表请求次数,内容就是阿拉伯数字.随便指定写一个1即可.

openssl ocsp  -index ./demoCA/index.txt -port 9999 -rsigner ./ocsp/ocsp.crt -rkey ./ocsp/ocsp.key -CA ./ca/ca.crt -text -out log.txt 

 

中级证书的OSCP服务器

openssl ocsp  -index ./demoCA/index.txt -port 8888 -rsigner./ocsp/ocsp.crt -rkey ./ocsp/ocsp.key -CA ./inter/inter.crt -text -out log.txt 

 

 

架设web服务器转发到80端口

 

这个不用解释了,web服务器都有反代.将9999端口转发到80端口.

当然如果你服务器不放其他网站,可以直接将OSCP端口指定为80,这样不需要转发.

 

架设证书文件服务器

这个就是让系统自动下载证书的文件服务器.只能是HTTP协议,不能是HTTPS.

 

中级证书需要提供的文件

ca.crt  证书文件

ca.crl  CA证书吊销已经签发的中级证书列表文件.

 

用户证书需要提供的文件

inter.crt  证书文件

inter.crl  中级证书吊销已经签发的用户证书列表文件.

 

制作一个注册表文件

如果你的自签名证书需要在目标机器上运作,那么就需要导入证书到该设备上.

win系统上比较快捷就是注册表导入了.

先用一台设备导入到信任区.实际上会在注册表区.

 

 

安装CA根证书

这个不需要解释,手动安装到受信任的根证书颁发机构即可.

 

获取证书指纹

查看证书可以看到证书的指纹.然后注册搜索这个指纹即可得到注册表记录.

注册表导出

我这里是566开头的,只需要在注册表右键导出即可.

 

 

将注册表文件分发到其他设备

然后双击reg文件,导入注册表文件,那么就会自动安装CA证书.

 

补充说明

如果你用EXE程序静默安装CA证书100%会被安全软件提示并拦截.

 

 

 

 

验证

 

用泄露的代码签名证书+自己伪造的时间戳服务器给驱动文件(.SYS文件)签名.

 

时间戳服务器也需要证书的.不过对他的验证不需要这么严格.可以用自签名证书.

而驱动文件签名必须要有微软交叉签名的证书,这个不能伪造.