openssl ocsp服务器及证书信任体系
文章目录
研究了下证书在系统的自动信任体系.以及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文件)签名.
时间戳服务器也需要证书的.不过对他的验证不需要这么严格.可以用自签名证书.
而驱动文件签名必须要有微软交叉签名的证书,这个不能伪造.