HTTPS数字证书的相关概念

马谦马谦马谦 2020年4月4日14:18:14 发表评论
文章最后编辑于:2020-4-5 00:21:20

一、证书和CA

HTTPS证书的颁发和验证一共包含以下几个角色:

  1. 顶级CA:最顶级的证书颁发机构,可以签发中间CA/。
  2. 中间CA:也是受信任的证书颁发机构,它由根CA签发,中间证书可以有很多级,中间CA也能再签发中间CA。
  3. 终端证书:由CA签发出来的证书。

三者的关系为:

HTTPS数字证书的相关概念

顶级CA机构一般不直接参数证书颁发,因为顶级CA就一个公私钥,泄密后影响太大。因此一般都是通过中间CA来颁发证书,中间CA可以有多层,中间CA也可以自己再签发中间CA,他们都是等效的。实际上的正式的使用场景也是这样,中间CA会根据加密算法或其他因素再衍生出多个中间CA。以百度的证书,它的证书就是由一个中间CA颁发:

HTTPS数字证书的相关概念

生成证书时,用户只要把自己的公私钥和身份信息(如域名信息等)提交给CA机构就行,CA机构对用户信息加密生成证书给到用户,用户把证书和私钥部署到服务端就能开启HTTPS了。

证书的表现形式

证书有多种表现形式,常用的为pemder格式,两者的区别在于前者是以ascii码表示的证书,后者是二进制形式。pem格式的证书是以下形式:

两种证书在各操作系统下都是能被直接打开的(windows需要修改后缀为crt),效果也都一样,可以使用windows的证书管理或者openssl命令转换两种证书格式。

二、客户端校验CA

证书部署到服务器后,客户端请求到证书,会根据证书信息找到对应的根证书签发机构(CA),如果CA受信任,则认为证书可靠,证书中的公钥也可靠,可以建立加密连接。而如果CA不受信任,浏览器就会拦截请求,提示连接不安全,需要用户确认后才建立连接。如chrome浏览器就会弹出以下弹框信息等用户确认后才建立连接:

HTTPS数字证书的相关概念

默认情况下,操作系统都会保存一份受信任根证书列表,这样在访问网站的时候很方便就能确认当前证书的颁发者是不是受信任CA了。windows系统可以在运行中输入certmgr.msc来查看:

HTTPS数字证书的相关概念

ubuntu在:

centos在:

OCSP校验

当本地信任库无法校验证书时,例如证书链不完整时,需要使用OCSP方式来校验证书的有效性,它实际上是一种在线校验证书机制,通过OCSP协议去请求服务端证书来检验CA。

三、部署HTTPS证书

nginx中配置HTTPS证书的方法:

高版本的nginx配置中,取消了ssl on指令,改为了以下形式:

证书中如果包含了CA,证书的格式应该为:

本文共执行61次查询,耗时0.364秒!
马谦马谦马谦

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: