数字证书工作原理 图文并茂

SSL证书和HTTPS的关系

HTTPS在HTTP的基础上加入了SSL加密协议,HTTP是明文传输,HTTPS是加密传输。

A quick definition:
HTTPS stands for hypertext transfer protocol secure and is the encrypted version of HTTP. It is used for secure communication across the internet or a network. The communication protocol is encrypted using Transport Layer Security (TLS) or, formerly, Secure Sockets Layer (SSL).

How get a digital certificate?

数字证书的创建流程:
https://help.aliyun.com/document_detail/211100.html
可以通过阿里云SSL证书服务购买SSL证书,并向CA中心提交证书申请,直到证书成功签发;您将已签发的证书安装到Web服务器后,则Web服务将会通过HTTPS加密协议来传输数据。
HTTPS加密传输协议可激活客户端浏览器到网站服务器之间的SSL加密通道(SSL协议),从而实现高强度双向加密传输,防止传输数据被泄露或篡改。

安全作用
数字签名的作用是防中间人伪造、篡改;
SSL数字证书的作用是证明发件人是谁,保证收到的公钥是官方发给我的,不是被中间人篡改过的。

SSL数字证书为什么会安全?

用SSL与不用SSL证书的区别:

数字证书工作原理 图文并茂
  • 防中间人劫持,获取明文数据;
  • 浏览器能验证服务器身份,区分官网或钓鱼网站;
  • 防中间人篡改,必要时,服务器还可以验证访客身份(可选 );

SSL证书怎么做到上面3个功能的?
请看数字证书签发、验签流程

数字证书签发、验签流程

前提一定要理解数字签名的流程.

数字证书就是给公钥做的数字签名,为什么需要给公钥做数字签名?
格式:
X.509是RFC5280定义的一种公钥证书格式(public key certificate)。
X.509证书也被称为数字Digital Certificate。
一张X.509包含一个Public Key和一个身份信息。X.509证书要么是自签发,要么是被CA签发。

数字证书工作原理 图文并茂
把版本、发行方、过期时间、域名、公钥、证书签名等信息 合成在一个文件内,就叫数字证书。
里面的信息,根据标准格式存入,也可以根据标准格式取出。

数字证书工作原理 图文并茂
CA签发,就是你申请证书的时,把你的信息块提交给CA,CA用他的RSA密钥给你信息块加密,
得到一个:Certificate Signature , CA的证书也会在你电脑里保存着,
这样你通过他的公钥就能解密Certificate Signature 得到H2(哈希值),
可以做对比,来判断是否篡改过。

简化版的签发、验收流程

数字证书工作原理 图文并茂
CA 签发证书的过程,如上图左边部分:
  • 首先 CA 会把持有者的公钥、用途、颁发者、有效时间等信息打成一个包,然后对这些信息进行 Hash 计算,得到一个 Hash 值;
  • 然后 CA 会使用自己的私钥将该 Hash 值加密,生成 Certificate Signature,也就是 CA 对证书做了签名;
  • 最后将 Certificate Signature 添加在文件证书上,形成数字证书;

客户端校验服务端的数字证书的过程,如上图右边部分:

  • 首先客户端会使用同样的 Hash 算法获取该证书的 Hash 值 H1;
  • 通常浏览器和操作系统中集成了 CA 的公钥信息,浏览器收到证书后可以使用 CA 的公钥解密 Certificate Signature 内容,得到一个 Hash 值 H2 ;
  • 最后比较 H1 和 H2,如果值相同,则为可信赖的证书,否则则认为证书不可信。

证书链
但事实上,证书的验证过程中还存在一个证书信任链的问题,因为我们向 CA 申请的证书一般不是根证书签发的,而是由中间证书签发的,比如百度的证书,从下图你可以看到,证书的层级有三级:

数字证书工作原理 图文并茂

我自己画了一下简图:

数字证书工作原理 图文并茂

H2由上一级给你生成,在你提交信息给CA的时候,CA用他的私钥和你信息摘要生成H2.

reference

数字签名、数字证书与HTTPS是什么关系?
https://www.zhihu.com/question/52493697

一文彻底搞懂加密、数字签名和数字证书!
https://segmentfault.com/a/1190000024523772

浏览器如何验证HTTPS证书的合法性?
https://www.zhihu.com/question/37370216

手工验证一张数字证书的有效性
https://blog.yuantops.com/tech/validate_a_digital_certificate_step_by_step/
浏览器验证SSL数字证书的步骤
https://blog.yuantops.com/tech/how_do_web_broswer_validate_ssl_certificates/

Original: https://www.cnblogs.com/mysticbinary/p/15339793.html
Author: Mysticbinary
Title: 数字证书工作原理 图文并茂

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578335/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux 下 xargs 命令

    xargs 常常被大家忽略的一个命令,对它的一些用法很多人可能不熟悉,其实它是一个功能强大的命令,特别是在结合管道进行批量处理方面 语法 xargs 语法格式如下 xargs [O…

    Linux 2023年6月13日
    0115
  • linux三剑客试题汇总

    1、找出/proc/meminfo文件中以s开头的行,至少用三种方式忽略大小写 2、显示etc目录下以root,centos或者user开头的信息 3、找出/etc/init.d/…

    Linux 2023年5月27日
    0109
  • 【证券从业】金融基础知识-第三章 证券市场主体02

    注1:后续学习并整理到第八章,全书完结后再合并成一个笔记进行源文件分享 注2:本章内容巨多,大约分为三篇文章记录消化 posted @2022-06-03 02:14 陈景中 阅读…

    Linux 2023年6月13日
    0103
  • Redis未授权+CVE-2019-0708组合拳利用

    0x01 简介 本次测试为实战测试,测试环境是授权项目中的一部分,敏感信息内容已做打码处理,仅供讨论学习。请大家测试的时候,务必取得授权。 拿到授权项目的时候,客户只给我了一个公司…

    Linux 2023年5月28日
    099
  • PHP array_count_values()

    array_count_values array_count_values() 函数用于统计数组中所有值出现的次数。 本函数返回一个数组,其元素的键名是原数组的值,键值是该值在原数…

    Linux 2023年6月7日
    096
  • .Net FW项目跑不起来且无Error信息

    阅文时长 | 0.17分钟字数统计 | 280.8字符主要内容 | 1、引言&背景 2、分析步骤 3、解决方案 4、声明与参考资料『.Net FW项目跑不起来且无Error…

    Linux 2023年6月13日
    097
  • Rprop 与 RMSprop 优化器

    https://www.cnblogs.com/setdong/p/16508415.html 1. Rprop 在 full-batch optimization 中, 一些梯度…

    Linux 2023年6月7日
    086
  • Redis in Action 文章投票

    首先在 Linux 开启 Redis 服务: 如果显示: 说明 Redis 服务已经开启,端口号 6379 redis.php init_data.php 用于添加案例的数据 vo…

    Linux 2023年5月28日
    0113
  • Nginx配置中遇到到的问题和解决方案

    关于Nginx配置中遇到到的问题和解决方案 整理知识,学习笔记 Nginx配置别名(alias)及PHP解析 Nginx配置别名(alias)及PHP解析。 语法规则: locat…

    Linux 2023年6月13日
    087
  • css或html中添加空格

    posted @2022-08-03 16:31 七窍玲珑心 阅读(8 ) 评论() 编辑 Original: https://www.cnblogs.com/lzh93/p/16…

    Linux 2023年6月13日
    0114
  • 上班摸鱼与网络安全

    上班不摸鱼,那这班上的没有灵魂啊。但是不久前爆出的国美网络监控事件,也提示我们网络有风险,摸鱼需谨慎。 https://baijiahao.baidu.com/s?id=17167…

    Linux 2023年6月13日
    0105
  • powershell版,Fail2Ban脚本,阻止黑客攻击sshd

    关键字 powershell Deny Hosts Fail2Ban ssh linux 近期惊闻 黑客团伙利用SSH暴力破a解,入侵远程设备 用于挖矿和DDoS攻击 疑似来自罗马…

    Linux 2023年6月14日
    081
  • 附031.Kubernetes_v1.20.4高可用部署架构二

    kubeadm介绍 kubeadm概述 参考附003.Kubeadm部署Kubernetes。 kubeadm功能 参考附003.Kubeadm部署Kubernetes。 本方案描…

    Linux 2023年6月13日
    085
  • Linux——基础命令用法(上)

    一、Linux基础命令 1、Linux命令的语法 一条完整的Linux命令的组成部分: 命令 选项 参数 命令:是某个具体的功能 选项:是对函数的修改(通常以-开头,-表示选项的短…

    Linux 2023年5月27日
    087
  • PyTorch 介绍 | 快速开始

    本节介绍有关机器学习常见任务重的API。请参阅每一节的链接以深入了解。 Working with data PyTorch有两个有关数据工作的原型: torch.utils.dat…

    Linux 2023年6月16日
    092
  • git 的使用

    git 的使用 1、介绍 代码版本管理、协同开发 对文件(代码)进行版本管理 完成协同开发 项目,帮助程序员整合代码 i)帮助开发者合并开发的代码 ii)如果出现冲突代码的合并,会…

    Linux 2023年6月14日
    094
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球