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

千伟吖_6910

千伟吖_6910

2023-01-29

6636人浏览

转载

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

本文解决的问题如下:

  • 从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”, 并响应浏览器已收到。

    page-agent 浏览器控制(CDP)
    page-agent 浏览器控制(CDP)

    使用 page-agent CLI(CDP)控制浏览器;CLI只能通过 GitHub Release 的 .tgz 安装,npm 官方包暂未发布。

    下载
  • 浏览器把之前自己生成的随机数“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视频教程》                                                    

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

浏览器

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

40

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

20

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

0

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

120

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

80

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

60

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

40

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

60

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

40

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方部署指南
Uvicorn官方部署指南

共0课时 | 0人学习

CSS3 教程
CSS3 教程

共18课时 | 16.6万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 12.1万人学习