热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

对HTTPS和SSL的理解

HTTPS也称作HTTPoverTLS。(TLS的前身是SSL,TLS1.0通常被被认为SSL3.1,TLS1.1为SSL3.2ÿ

HTTPS也称作HTTP over TLS。(TLS的前身是SSL,TLS 1.0通常被被认为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3)

谈到HTTPS首先要了解下HTTP和对称性加密、非对称性加密(加密可以自行搜索,在此不做赘述)。

公钥加密,私钥解密。私钥加密,公钥解密。



谈下对HTTP和HTTPS协议的理解:

browser和server想要加密聊天(使用http),不想聊天内容被其他人知道,使用了非对称加密:
browser:“server,把你的公钥给我发过来”。
server:“给你,这是我的公钥:*server的公钥*,你可以用这个公钥加密信息后发给我”
browser:“叽里呱啦叽里呱啦(加密过后的话)”
这个过程就是server把自己的公钥给了browser,browser拿到server的公钥后把自己的消息加密发送给server,server收到密文后再用自己的私钥解密得到browser的消息。

如果没有意外,browserserver直接就完成了加密信息传输。但是在这个过程中会出现一个问题:browser怎么确认对方是server呢?因为server发给browser的公钥有可能会被黑客X拦截(比如本地host文件被修改后,dns拦截),黑客X把自己的公钥发给了browserbrowser拿到的公钥就是黑客X的公钥,那么browser加密发过去密文,黑客X就能用自己的私钥去解密看到传输的消息了。

所以HTTP协议的不安全原因就是:请求发起方无法确认响应方的真实身份。



当使用HTTPS协议时:

有一个声誉度很高的贤者CAbrowserserver都信任他)来做公证员,避免消息被黑客X窃取。

browserserver聊天的时候,怎么证明server是本人呢?

这时候CA要做的事情有两件,首先给server颁发一个证书【站证书】,证书是用自己的私钥把server的公钥和server的私密信息加密后做成的;然后再告诉browser自己的公钥【根证书】。

browser收到server的消息的时,先看下证书【站证书】,使用CA的公钥【根证书】解密,然后获取到server的公钥和server的身份信息,browser就能相信对方是server若无法解密或者身份信息不对,那就会断开联系。

确保对方是server后,browser和就可以直接用对称性的加密来传递消息聊天了(加密解密速度快)。




SSL的请求完整过程示例:

第一步: browserserver发送一个通信请求

browser ---> server:你好!

第二步: serverbrowser发送自己的数字证书。证书中有一个公钥用来加密信息,私钥由server持有。

server ---> browser :你好!我是server ,这里是我的数字证书 。

第三步: browser收到server的证书后,它会去验证这个数字证书到底是不是server的,数字证书是否存在问题,如果检查没有问题,就说明数字证书里面的公钥确实是server的。检查数字证书后,browser会发送一个随机的字符串给server。server用自己的私钥去加密,然后把加密结果返回给browserbrowser用数字证书里面的公钥解密这个返回结果,如果解密结果与之前生成的随机字符串一致,那说明对方确实是私钥的持有者-server

browser ---> server:向我证明你就是server,这是一个随机字符串。

server---> browser :这是将随机字符串加密后的结果。

第四步: 验证server的身份后,browser生成一个对称加密算法和密钥,用于后面的通信的加密和解密。这个对称加密算法和密钥,browser会用公钥加密后发送给server,别人截获了也没用,因为只有server自己的私钥才可以解密。这样,后面browserserver就都可以用对称加密算法来加密和解密通信内容了。

server---> browser :已经收到你发来的对称加密算法和密钥,我们可以联系了。

browser ---> server:【巴拉巴拉巴拉巴拉】

server---> browser :【拉巴拉巴拉巴拉巴】



还有一些需要了解的知识:


  • CA机构向浏览器开发商颁发CA的根证书,开发商将CA机构的根证书放置于浏览器的一个证书信任列表中。当用户下载安装浏览器到自己的电脑里面时,用户的浏览器会信任证书信任列表里面的任意CA证书签署的证书。
  • 当一家公司希望他的网站可以通过HTTPS通信的时候,该公司会在CA机构购买/申请一个网站证书,由CA机构签发的网站证书可以向用户确保网站的安全。
  • 当用户需要浏览这一个安全网站的时候,浏览器首先向服务器请求证书,检查该证书的根证书是否在浏览器的证书信任列表里面并验证证书的签名是否正确,当检查无误的时候浏览器继续跟服务器建立HTTPS连接。
  • 证书并不是只有一级,证书不可能只有几个机构进行颁发,所以证书的颁发是一级一级的。客户端在验证证书也是一级一级往下验证。最顶级的就是根证书, 根证书一般会保存在客户端(在客户端安装时就有一组根证书),如果服务端证书的根证书在客户端的信任列表中,那么就会向根证书验证二级证书的合法性,然后再向二级证书机构验证三级证书的合法性,以此类推。

关于SSL证书链的知识可以看看下面这篇文章:百度安全验证https://baijiahao.baidu.com/s?id=1675963146214744309&wfr=spider&for=pc


推荐阅读
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 高效重装Windows 10系统指南
    如何快速地为您的电脑重装Windows 10系统?本文将详细介绍从下载系统镜像到安装完成的每一步操作。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 短暂的人生中,IT和技术只是其中的一部分。无论换工作还是换行业,最终的目标是成功、荣誉和收获。本文探讨了技术人员如何跳出纯技术的局限,实现更大的职业发展。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
  • 本文探讨了 TypeScript 中泛型的重要性和应用场景,通过多个实例详细解析了泛型如何提升代码的复用性和类型安全性。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 在配置Nginx的SSL证书后,虽然HTTPS访问能够正常工作,但HTTP请求却会遇到400错误。本文详细解析了这一问题,并提供了Nginx配置的具体示例。此外,还深入探讨了DNS服务器证书、SSL证书的申请与安装流程,以及域名注册、查询方法和CDN加速技术的应用,帮助读者全面了解相关技术细节。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 阿里云服务器搭建详解——Ubuntu
    由于自己电脑配置跟不上,双系统一开,整个电脑就会变得非常卡顿,所以决定在阿里云买一个云服务器。听朋友说,学生买的话是非常便宜 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
author-avatar
jeanis
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有