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

HTTPS学习笔记:(1)入门介绍

前言

HTTPS包含的知识体系过于庞大,很难通过一篇文章进行介绍,本系列笔记主要基于<>而做的一个读书笔记,通过阅读该书与自己的一些感悟从多个方面对HTTPS进行的总结。

关于快速入门,可以先看看:https://blog.csdn.net/eric_sunah/article/details/103144744

背景

随着互联网行业的发展,HTTP协议的因其轻便简单而收到广泛的应用,然而由于其都是基于TCP协议进行明文传输,所以安全问题可以说是HTTP协议最大的一大的短板,总结而言,HTTP的安全问题主要包含以下几个方面:

  • 可窃听:HTTP使用明文进行传输,因此传输内容可能很容易被窃听。
  • 可伪装:HTTP协议中不管是请求还是响应都不会对客户端和服务器的身份进行确认。通过中间人攻击的方式很容易伪装成通信的一端与另一端进行通信。
  • 可篡改:HTTP协议本身没有提供数据完整性的校验机制,因此很容易被中间人进行信息篡改。

由于上述问题,HTTPS应运而生。HTTPS可以简单理解为,运用SSL/TLS,PKI,密码学等安全机制来保障HTTP安全通信的技术集合,其主要解决了上述的几个问题:

  • 防止被窃听—加密:通过和SSL或TLS的组合使用,加密HTTP的通信内容。
  • 防止遭遇伪装—证书:通过证书确认通信双方的身份。证书可以由专门的第三方CA颁发,也可以自己给自己颁发(风险较大)。
  • 防止被篡改—摘要:通过对主体内容进行摘要计算,以防止信息篡改。
概念

HTTPS涉及到的概念较多,本文先对主要概念进行简单说明,后面将会对每个概念进行详细介绍。
主要概念如下:

  • SSL:SSL(Secure Sockets Layer)安全套接层,该协议由Netscape开发的。从OSI 7层模型的角度看是在TCP与HTTP两层中间插入的一层,用来确保上层HTTP的数据安全。从数据层面看,在传输的过程中,会将HTTP协议的内容包裹起来,以达到安全传输的目的。通过wireshark的抓包,可能更加清楚的了解该层的位置与包裹的方式.

HTTPS学习笔记:(1)入门介绍

  • TLS:TLS(Transport Layer Security)传输层安全协议。作用和SSL类似,可以理解为SSL 3的升级版,之所以改名,主要是为缓和微软与Netscape当时因浏览器之争而产生的矛盾。
  • 证书:证书也叫公开**证书,是由数字证书认证机构(CA,Certificate Authority)或其相关机构颁发用来确认身份的文件。
  • PKI:互联网公钥基础设施(public key infrastructure,PKI)
  • CA:证书颁发机构(certification authority或certificate authority,CA),是PKI实现成员间安全通信的一种模型。
  • 对称加密算法:用相同的秘钥进行加密,解密的算法称为对称加密算法,例如AES.该类算法的速度较快
  • 非对称加密算法:以公钥,私钥分别进行加密解密的方式称为非对称加密算法,该算法一般会比对称加密算法要慢
引入的问题

鱼翅熊掌不可兼得,在解决了HTTP安全问题的同时,也引入了以下几个问题:

  • 提高实施成本:根据证书的用途以及类型,通过CA签发证书的价格从免费-几百万/年不等。一个证书几百万,不信?看看下面阿里云上选择的一个土豪证书套餐的截图:
    HTTPS学习笔记:(1)入门介绍

  • 性能损耗:HTTPS在原有通信的基础上增加了TLS握手的处理流程,以及加密过程中涉及到数据的加密解密,因此会导致增加时延以及消耗更多系统资源

操作流程

HTTPS落地到业务的操作流程主要包括以下几步:

  1. 生成证书
    生成证书的大致流程为:确定证书类型->填写CSR->提交申请。不同的第三方机构流程可能会存在一定的差异。

证书可以从第三方供应商那边购买,也可以自己签发[如果某网站仅用自签名证书对外提供服务,安全性没保障不说,专业性也肯定受到质疑],常见的CA包括:GeoTrust,Symantec,GlobalSign,沃通等。公有云一会代理这些CA的销售渠道,例如:Amazon,腾讯云,阿里云等。例如:
HTTPS学习笔记:(1)入门介绍

  1. 证书配置
    管理员拿到证书后,就可以对web服务器进行配置了,不同的服务器配置方式不同,可参考:https://www.globalsign.cn/resources.shtml

  2. 按照协议传输

对配置了HTTPS的网站进行访问时,就按照SSL/TLS协议进行协商与数据传输了,本文不对协议的内容进行介绍,细节请参考后续文章。


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • python3+tkinter实践历程(四)——模仿CRT完成基于socket通信与tkinter的TCP串口客户端
    python3tkinter实践历程(四)——基于socket通信与tkinter的TCP串口客户端(仿CRT)文章目录系列文章目录分享背景制作背景最终功能工具截图展示代码详解系列 ... [详细]
  • UML 包图
    什么是包包可直接理解为命名空间,文件夹,是用来组织图形的封装,包图可以用来表述功能组命名空间的组织层次。•在面向对象软件开发的视角中&#x ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • centos6.8 下nginx1.10 安装 ... [详细]
  • 如何搭建服务器环境php(2023年最新解答)
    导读:本篇文章编程笔记来给大家介绍有关如何搭建服务器环境php的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、怎么搭建p ... [详细]
  • OAuth2.0指南
    引言OAuth2.0是一种应用之间彼此访问数据的开源授权协议。比如,一个游戏应用可以访问Facebook的用户数据,或者一个基于地理的应用可以访问Foursquare的用户数据等。 ... [详细]
  • 基于SSL的mysql服务器的主从架构实现说明:本文选用172.16.22.1作为主服务器,172.16.22.3作为从服务器从服务器的mysql软件版 ... [详细]
  • 网络编程:其实就是在学socketsocket是什么?翻译过来称为套接字是对底层的TCPIPUDP等网络协议进行封装使得上层的应用程序开发者,不用直接接触这对复杂,丑陋的协议在程序 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
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社区 版权所有