手把手教你在浏览器校验HTTPS数字证书

本篇文章给大家带来了关于HTTPS的相关知识,其中主要介绍了浏览器是怎么校验HTTPS的数字证书 ,以及HTTP协议、相关证书的概念介绍,下面一起来看一下,希望对大家有帮助。

手把手教你在浏览器校验HTTPS数字证书

本文解决的问题如下:

  • 从HTTP协议变成HTTPS协议为何需要证书?
  • HTTPS协议如何体现出安全(HTTPS协议原理)?
  • 如何免费获取HTTPS所需的证书以及如何部署证书到服务器?
  • 浏览器如何验证证书?
  • 证书中包含哪些内容?
  • CA证书和网关证书是一个东西吗?

免费申请证书

免费申请证书网站:https://freessl.cn

  • 域名申请,并解析到服务器

  • 证书与域名绑定

  • 在服务器下载证书部署脚本,并部署

HTTPS原理

从 HTTP 协议栈层面来看,我们可以在 TCP 和 HTTP 之间插入一个安全层,所有经过安全层的数据都会被加密或者解密,

45bff29780f8e34f31292f84c30c846.jpg

于是HTTPS就变成了HTTP和安全层先通信,安全层再和TCP通信。在安全层完成数据的加解密过程。

加密方式:

  • 对称加密,就是双方使用“相同的密钥”,一方加密一方解密。
    • 优点:加解密快
    • 缺点:加密密钥易暴露,安全性低
  • 非对称加密,就是一方使用公钥加密,另一方只能使用私钥解密,公钥和私钥是唯一配对的。
    • 优点:安全
    • 缺点:加解密慢

基于以上特性,传输数据过程采用对称加密方式保证数据传输效率, 用非对称加密方式解决密钥易暴露问题。

c8f4c78f3c62af7f919ba8acd7bae03.jpg

  • 浏览器发起https握手链接时,告知服务器自己支持的“对称加密套件列表” 和 “非对称加密套件列表”以及一个自己生成的“随机数client-random”。

  • 服务器收到请求后,选择自己支持的加密方式告知浏览器,且返回一个“数据数service-random” 和 “服务器的数字证书” 和 颁发给服务器数字证书这个“CA机构本身的数字证书”。

  • 浏览器验证“服务器数字证书”和“CA机构数字证书”的有效性, 验证成功后,再生成一个随机数“pre-master”,并使用“服务器数字证书”中携带的“公钥”对随机数“pre-master”进行加密,发送给服务确认。

  • 服务器利用“服务器数字证书”的“私钥”进行解密,得到随机数“pre-master”, 并响应浏览器已收到。

  • 浏览器把之前自己生成的随机数“client-random”、“pre-master” 以及服务器返回的“service-random” 组合在一起生成一个新的密钥“master secret”, 之后利用新的密钥进行与服务器之间数据的加密。

提问:

  • 服务器上的证书来自哪里?
    向CA机构申请的数字证书, 部署在服务器上时,一般除了CA机构颁发给服务的数字证书(俗称网关证书),还有“CA机构自身的数字证书”。

  • CA机构颁发给服务器的数字证书中包含哪些内容?
    至少包含了向CA机构申请证书时的“组织机构/个人信息”, “证书有效期”、“证书的公钥”、“CA机构给到证书的数字签名”、“CA机构信息”等

  • 服务器上只部署了服务器自己的证书,没有CA机构的数字证书,咋办?
    服务器上没得CA机构的数字证书时,浏览器可以从互联网自动下载,但这样可能拉长首次接口/页面访问的时间,还可能失败。

浏览器如何验证证书

首先, 浏览器利用证书中指定的hash算法对”组织机构的明文信息”计算出信息摘要
然后,利用CA证书的公钥来解密数字证书中的”数字签名”,解密出来的数据也是信息摘要。
最后,判定两个摘要信息是否相等就行。

3cbd35fa19b4696b2a75d9fbcff4326.jpg

如何证明CA证书本身不是伪造的呢?

简单粗暴的方案是:操作系统内置所有CA机构的证书,且假设这个操作系统没有被恶意入侵。

折中方案是:把CA机构分成两类,根CA和中间CA, 我们通常向中间CA申请证书,根CA主要给中间CA做认证用。中间CA又可以给其它中间CA认证,形成树状结构,一级级认证,直到找到根证书。

证书上都有证书链,能找到上一级机构是什么,使用与上一步相同的算法,让上一级机构证实当前证书的真实性,直到追溯到根证书,而根证书只需要在操作系统中可查找到就任务是对的,因为根证书是行业内浏览器和操作系统厂商的规范。

如何检验根证书的合法性?

根证书在安装操作系统时内置了。 内置的根证书,是通过WebTrust国际安全审计认证的,权威证书。

如何验证根证书是否合法,浏览器查找根证书是否存在操作系统里面,若不是则不合法,反之则合法。

WebTrust 是由两大著名注册会计师协会 AICPA(美国注册会计师协会)和 CICA(加拿大注册会计师协会)共同制定的安全审计标准,主要对互联网服务商的系统及业务运作逻辑安全性、保密性等共计七项内容进行近乎严苛的审查和鉴证。 只有通过 WebTrust 国际安全审计认证,根证书才能预装到主流的操作系统,并成为一个可信的认证机构。

自签名证书

自签名的CA证书,需要用户提前内置证书在用户电脑文件中,或者放置在服务器上。
根证书就是一种特殊的自签名证书。

推荐学习:《HTTP视频教程》

以上就是手把手教你在浏览器校验HTTPS数字证书的详细内容,更多请关注其它相关文章!