购买证书基础知识 index文件格式 证书校验和证书吊销 CRL和OCSP使用说明
- 2019-09-23
- admin
- 原创 2712
一、购买证书基础知识
1、域名匹配以证书DNS信息为准,有DNS信息则不匹配CN,不存在DNS信息才匹配CN,Chrome只匹配DNS;
2、通配符证书覆盖:*.3scard.com不覆盖3scard.com,如果要覆盖则DNS信息需要增加条目;
3、通配符证书可以买一级、二级域名通配符证书,二级域名通配符证书不能覆盖主域名;
4、证书安全级别:EV型证书 > 赛门铁克保真通配符证书 > GeoTrust保真通配符证书 > GeoTrust入门通配符证书;
5、EV型证书只能是单域名证书,不能是通配符证书;
6、赛门铁克保真通配符证书可以使用Norton Secured Seal;
7、供应商的DN是RFC2253格式的证书主题,P10文件是证书请求文件;
8、Digicert证书昂贵,Sectigo证书便宜,证书好坏在于安全性和兼容性;
9、Digicert合作伙伴:https://www.digicert.com/partners/partner-network/partner-program/partners-directory
根证书有效期:
1、https://wiki.mozilla.org/CA/Root_CA_Lifecycles
2、https://www.chromium.org/Home/chromium-security/root-ca-policy/#3-modern-infrastructures
4、https://www.trustasia.com/view-digicert-root-certificate-upgrade
证书透明度:
1、证书透明度规范:https://www.rfc-editor.org/rfc/rfc6962
2、证书透明度日志:https://certificate.transparency.dev/logs
3、证书透明度解决CA机构恶意签发或错误签发证书的问题;
4、证书透明度包含三部分:证书日志、证书监控、证书审计,其中证书日志是基础;
5、浏览器验证证书的SCT字段,验证该证书是一个公开签发的证书,扮演一个证书审计角色;
自动签发证书:
1、ACME自动管理证书规范:https://www.rfc-editor.org/rfc/rfc8555
2、ACME客户端:https://github.com/acmesh-official/acme.sh
3、ACME客户端:https://github.com/certbot/certbot
4、certbot帮助:https://eff-certbot.readthedocs.io/en/stable/using.html
5、命令帮助:certbot -h
6、打印证书:certbot certificates
7、签发证书:certbot certonly --key-type rsa --manual --preferred-challenges dns -d *.domain.com,domain.com
8、最新签发证书位于/etc/letsencrypt/live,历史所有证书位于/etc/letsencrypt/archive;
9、--dry-run参数用于测试cetonly或renew,并不实际签发证书;
二、index文件格式
第1列:Certificate status flag(V=valid, R=revoked, E=expired);
第2列:Certificate expiration date in YYMMDDHHMMSSZ format;
第3列:Certificate revocation date in YYMMDDHHMMSSZ[,reason] format. Empty if not revoked;
第4列:Certificate serial number in hex;
第5列:Certificate filename or literal string 'unknown';
第6列:Certificate distinguished name;
附注:数据的时间是GMT时间,但双击证书时显示当地时间。
三、证书校验和吊销
证书比较:CN、CA、序列号、模数、指纹,指纹是DER格式证书的SHA1值,证书和私钥是否匹配可以比较模数;
根证书校验:火狐浏览器默认不使用操作系统根证书列表校验服务器证书,除非设置security.enterprise_roots.enabled;
查询外购证书:https://crt.sh,支持查询一级域名相关的所有证书,支持查询指定的证书状态以及信息;
吊销外购证书:国内供应商仅仅提交吊销请求到国外机构,实际吊销时间无法确定,至少需要保证OCSP以及CRL看到证书吊销;
浏览器使用吊销信息:IE相对其它浏览器能够更快使用吊销信息,其它浏览器可能不是那么及时;
校验证书是否由CA签发:openssl verify -CAfile ca.crt cert.crt,校验整个证书链;
吊销证书:openssl ca -revoke cert.crt,仅仅更新index文件中记录状态以及吊销时间;
获取证书状态:openssl ca -status serial,读取index文件中记录的V、R、E状态,并不做时间校验;
四、CRL以及OCSP使用说明
1、生成crl:openssl ca -gencrl -out crl.txt -crldays 365,使用index文件生成吊销列表,包含所有吊销证书的序列号;
2、使用crl:curl使用crlfile参数校验服务端证书有效性,nginx使用ssl_crl配置校验客户端证书有效性;
3、crl文件过期会导致服务端证书或客户端证书有效性校验失败;
1、启动ocsp服务:openssl ocsp -text -CA ca.crt -index index.txt -rsigner ca.crt -rkey ca.key -port 8080 -ndays 1
2、访问ocsp服务:openssl ocsp -host 127.0.0.1:8080 -VAfile ca.crt -issuer ca.crt -serial 0x599546D388830178
3、ocsp校验服务端证书有效性可能导致ocsp服务负载过高,优化方案是使用stapling,即应用服务器缓存证书有效性;
4、企业使用ocsp一般是校验客户端证书有效性,但是这种场景使用crl更有利于应用服务的健壮性,所以推荐使用crl;
5、搭建ocsp服务推荐基于如下开源代码修改:https://github.com/xipki/xipki