ca(细说 CA 和证书)
CA,Catificate Authority,它的作用就是提供证书(即服务器证书,由域名、公司信息、序列号和签名信息组成)加强服务端和客户端之间信息交互的安全性,以及证书运维相关服务。任何个体/组织都可以扮演 CA 的角色,只不过难以得到客户端的信任,能够受浏览器默认信任的 CA 大厂商有很多,其中 TOP5 是 Symantec、Comodo、Godaddy、GolbalSign 和 Digicert。
服务器证书分类
可以通过两个维度来分类,一个是商业角度,一个是业务角度。
???????
??????
??
??
??????
??
??????
www.xiaohuzige.comwww.barret.cc ??*.barretlee.com ??*.barretlee.com
*.xiaohuzige.com*.barret.cc ??
需要强调的是,不论是 DV、OV 还是 EV 证书,其加密效果都是一样的!它们的区别在于:
DV(Domain Validation),面向个体用户,安全体系相对较弱,验证方式就是向 whois 信息中的邮箱发送邮件,按照邮件内容进行验证即可通过;
OV(Organization Validation),面向企业用户,证书在 DV 证书验证的基础上,还需要公司的授权,CA 通过拨打信息库中公司的电话来确认;
EV(Extended Validation),打开 Github 的网页,你会看到 URL 地址栏展示了注册公司的信息,这会让用户产生更大的信任,这类证书的申请除了以上两个确认外,还需要公司提供金融机构的开户许可证,要求十分严格。
OV 和 EV 证书相当昂贵,使用方可以为这些颁发出来的证书买保险,一旦 CA 提供的证书出现问题,一张证书的赔偿金可以达到 100w 刀以上。
CA 的作用
前文 提到如果本地生成公/私钥对和对应未签证的证书,如果使用的证书没有签证,或者未在浏览器受信的 CA 签证,你会看到下图的问题:
net:ERR_CERT_AUTHORITY_INVALID
上图出现的错误是
,我们生成证书和公/私钥对的流程都是正确的,但是浏览器不认这张证书,并且提示证书授权不通过;如果通过其他与 Common Name 不同的域名去访问,如我注册的时候使用的
net:ERR_CERT_AUTHORITY_INVALIDlocalhost
,但是访问的时候用的127.0.0.1
,还会报出这样的错误:
net:ERR_CERT_COMMON_NAME_INVALID