热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一篇文章带你了解https是如何做到客户端与服务端之间安全通信

https是什么。超文本传输安全协议(英语:HypertextTransferProtocolSecure,缩写:HTTPS

https是什么。

超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。

历史上,HTTPS连接经常用于万维网上的交易支付和企业信息系统中敏感信息的传输。在2000年代晚期和2010年代早期,HTTPS开始广泛使用于保护所有类型网站上的网页真实性,保护账户和保持用户通信,身份和网络浏览的私密性。

维基百科上可以看出,https是用于互联网客服端与服务器交互的一个加密协议。

当然,这篇文章不是来讲述https协议的过程,浏览器与服务端几次握手,如何传输数据,与http之间的区别;也不是讲述如何实现一个https协议。这篇文章只是用来通俗的说法,来讲述https是如何做到加密的。


以前看过一个小品,夫妻俩吵架,双方都不想跟对方说话,正好来了个中间人,夫妻俩就让这个中间人来传话,但这个中间人不安好心,老公说一句"不吵了行不行",他传到老婆那就变成“你真丑”。这个现象就是典型的中间人攻击,劫持数据,篡改后再传递,http之间是明文通信,会轻而易举的被中间人攻击,所以是不安全的。

那么如何做到安全传输信息呢。两个字:加密

大家都知道加密分为两种,

  • 对称加密
  • 非对称加密

一句话说明两者的区别:对称加密,加密解密使用相同密钥。非对称加密,加密解密使用不同密钥。
所以我们想要做到http信息安全,一定要选择非对称加密。

ok,当客户端想要获取数据时,服务端获将数据传输给客户端的同时,将非对称加密的私钥传递给客户端。当客户端准备传递给服务端数据的时候,使用这个私钥,加密数据之后,再次传递给服务端。这时候,如果有第三人在中间拦截信息,只能拦截到服务端传递给客户端的数据,客户端传递给服务端的数据,因为使用了密钥加密(非对称性加密,使用公钥加密的数据,只能用私钥解密),中间人无法破解,也就保证了一端数据安全。


那么如何保证服务器给传输到客户端的数据也安全呢,这就涉及到了一个名词数字证书,很多人都听说过数字证书,但是这个数字生证书从本质上是什么?下文我就介绍一下。

数字证书

公开密钥认证(英语:Public key certificate),又称公开密钥证书、公钥证书、数字证书(digital certificate)、数字认证、身份证书(identity certificate)、电子证书或安全证书,是用于公开密钥基础建设的电子文件,用来证明公开密钥拥有者的身份。此文件包含了公钥信息、拥有者身份信息(主体)、以及数字证书认证机构(发行者)对这份文件的数字签名,以保证这个文件的整体内容正确无误。拥有者凭着此文件,可向电脑系统或其他用户表明身份,从而对方获得信任并授权访问或使用某些敏感的电脑服务。电脑系统或其他用户可以通过一定的程序核实证书上的内容,包括证书有否过期、数字签名是否有效,如果你信任签发的机构,就可以信任证书上的密钥,凭公钥加密与拥有者进行可靠的通信。

关注数字证书理论可以直接移步wiki,下面讲一些通俗的说法。数字证书

数字证书是什么,其实可以理解为现实世界的身份证。身份证从哪里来的,国家;那么数字证书从哪里来的,从根证书颁发而来的,两者都是用来验证一个物质存在的身份的真实性。

那么身份证可以被伪造吗,可以;那么数字证书当然也可以被伪造。但是,伪造的身份证可以通过检查吗,从理论上显然不可以,那么伪造的数字证书可以通过检查吗,当查找链路发现不是根证书颁发的证书,就是一个不受保护的证书。

两者都一个相对安全稳定的端,国家身份证的数据库以及根证书存储位置。

现在我想知道根证书是如何给下游颁发子证书的呢。

非对称行加密有个特性,公钥加密的数据只能用私钥解密,而私钥加密的数据只能用公钥解密。所以说,根证书根据申请者的信息生成对应的公钥,发布给服务器,简单的说,这个公钥就可以叫做证书。

所以,当服务器传递给客户端信息的时候,我们使用这个公钥加密一段字符串(token),传递给客户端,这时候客户端进行解密这个字符串(token)并比较这个token是否生效,从而客户端(浏览器)就可以得知,当前的数据是否被劫持,就可以保证数据传递的安全性。

客户端的根证书从哪里来的?有一部分存储在操作系统的证书列表,也有存储在浏览器中。所以说,在操作系统中尽量少的去信任未知证书,如果错误添加,有可能就会造成伪造证书,以及中间人攻击的可能性。

最后用一张最简单的图片总结,https 是如何保证客户端与服务端通信的安全的。
enter image description here

后记

当然https比这复杂的要多,例如随机字符串,多次握手,以及对称加密密钥的传递。数字证书也更复杂,这里为了更浅显的总结并没有一一赘述。

创作于我的网站



推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 分享2款网站程序源码/主题等后门检测工具
    本文介绍了2款用于检测网站程序源码和主题中是否存在后门的工具,分别是WebShellkiller和D盾_Web查杀。WebShellkiller是一款支持webshell和暗链扫描的工具,采用多重检测引擎和智能检测模型,能够更精准地检测出已知和未知的后门文件。D盾_Web查杀则使用自行研发的代码分析引擎,能够分析更为隐藏的WebShell后门行为。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
author-avatar
边怀珠大海
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有