首页 > 其他分享 >https简单介绍(转载)

https简单介绍(转载)

时间:2022-11-03 23:13:43浏览次数:77  
标签:TLS 加密 https 证书 SSL HTTPS 简单 转载

HTTPS简单介绍(转载)

HTTPS简单介绍(转载)

2021-01-12T12:06:18+08:00

HTTPS简单介绍(转载)

本章节非原创,转载来源:https://juejin.cn/post/6844903599303032845

一、HTTP存在的问题

1.1 可能被窃听

  1. HTTP 本身不具备加密的功能,HTTP 报文使用明文方式发送
  2. 由于互联网是由联通世界各个地方的网络设施组成,所有发送和接收经过某些设备的数据都可能被截获或窥视。(例如大家都熟悉的抓包工具:Wireshark)

1.2 认证问题

  1. 无法确认你发送到的服务器就是真正的目标服务器(可能服务器是伪装的)
  2. 无法确定返回的客户端是否是按照真实意图接收的客户端(可能是伪装的客户端)
  3. 无法确定正在通信的对方是否具备访问权限,Web 服务器上某些重要的信息,只想发给特定用户即使是无意义的请求也会照单全收。无法阻止海量请求下的 DoS 攻击(Denial of Service,拒绝服务攻击)。

1.3 可能被篡改

1.请求或响应在传输途中,遭攻击者拦截并篡改内容的攻击被称为中间人攻击(Man-in-the-Middle attack,MITM)。

二、HTTPS介绍

2.1 什么是HTTPS

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

2.2 HTTPS怎么解决上述问题

HTTPS是在通信接口部分用 TLS(Transport Layer Security 传输层安全性协议),TLS协议采用主从式架构模型,用于在两个应用程序间通过网络创建起安全的连接,防止在交换数据时受到窃听及篡改。

https和https

2.3 SSL和TLS的关系

  1. 传输层安全性协议(英语:Transport Layer Security,缩写作 TLS),及其前身安全套接层(Secure Sockets Layer,缩写作 SSL)是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障。
  2. 网景公司(Netscape)在1994年推出首版网页浏览器,网景导航者时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。
  3. IETF将SSL进行标准化,1999年公布第一版TLS标准文件。随后又公布RFC 5246 (2008年8月)与 RFC 6176 (2011年3月)。在浏览器、电子邮件、即时通信、VoIP、网络传真等应用程序中,广泛支持这个协议。

2.4 TLS/SSL 协议

HTTPS 协议的主要功能基本都依赖于 TLS/SSL 协议,TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数对称加密非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性。

TLS/SSL协议

SSL/TLS协议运行机制 可以看阮老师的SSL/TLS协议运行机制的概述

RSA加密算法原理可以看阮老师的这两篇文章 RSA算法原理(一)RSA算法原理(二)

HTTPS加密机制

SSL或TLS协议运行机制的概述(流程)

彻底搞懂HTTPS的加密机制(原理)

发起HTTPS请求

通过了解HTTPS加密机制,我们知道:

网站在使用HTTPS前的必要准备:

  • 网站拥有用于非对称加密的公钥A、私钥A
  • 网站向“CA机构”申请颁发一份数字证书以及对应的数字签名。 数字证书里有(证书持有者、网站的公钥A以及其他信息)。 数字签名是用CA机构私钥加密过的网站数字证书的hash值。

浏览器在发起HTTPS请求的过程中,在握手阶段(3次握手):

  • 浏览器发起请求(=>)
  • 网站把证书和签名传输给浏览器。 (<=) 我们可以认为,“浏览器保有CA机构的公钥”。(实际上是操作系统和浏览器预装了一些根证书,利用这些证书进一步获取CA机构的证书以及公钥) 浏览器用CA机构的公钥验证网站的证书:
    • 浏览器用CA机构的公钥解密网站发来数字签名
    • 浏览器计算网站发来的数字证书的hash值
    • 比较签名与hash值是否相同
  • 网站证书验证通过,即可从证书中取出证书持有者的公钥(网站的公钥)。 浏览器随机生成一个用于对称加密的密钥X,用公钥A加密后传给服务器。(=>)
  • 服务器拿到后用私钥A解密得到密钥X。这样双方就都拥有密钥X了,且别人无法知道它。之后双方所有数据都用密钥X加密解密。

除了使用浏览器,我们还可以使用其他客户端,比如Java就提供了HttpsURLConnection, 以及apache和JDK11的HttpClient等,也可以发起https请求。 与使用浏览器相同,https连接握手的过程中,网站也会发来证书和签名,也需要对证书进行验证。

就按使用证书的不同方式,分为3种情况: 1,信任系统提供的证书(信任权威CA颁发的证书); 2,全部信任证书; 3,信任指定证书;

之后,在使用java发起http/https请求的博文中,会进行举例说明。

网站使用HTTPS

//TODO

https://blog.csdn.net/wjskeepmaking/article/details/79177438

https://blog.csdn.net/ithomer/article/details/78075006

https://www.cnblogs.com/fron/p/https-20170111.html

标签:TLS,加密,https,证书,SSL,HTTPS,简单,转载
From: https://www.cnblogs.com/w784319947/p/16856192.html

相关文章

  • 发起HTTP请求:Spring中RestTempalate设置请求头(转载)
    发起HTTP请求:Spring中RestTemplate设置与携带请求头(转载)发起HTTP请求:Spring中RestTemplate设置与携带请求头(转载)2021-01-08T16:56:48+08:00Rest设置请求头以及进一步......
  • SSL或TLS协议运行机制的概述(转载)
    SSL或TLS协议运行机制的概述(转载)SSL或TLS协议运行机制的概述(转载)2021-01-12T10:14:27+08:00互联网的通信安全,建立在SSL/TLS协议之上。本文简要介绍SSL/TLS协议的运......
  • git分支管理策略_转载
    git������������������_������Git分支管理策略转载来源:Git分支管理策略-阮一峰的网络日志(ruanyifeng.com)如果你严肃对待编程,就必定会使用”版本管理系统“(VersionControlSystem)。眼下......
  • LeetCode_Stack_589. N-ary Tree Preorder Traversal N 叉树的前序遍历【栈,迭代】【简
    目录​​一,题目描述​​​​英文描述​​​​中文描述​​​​示例与说明​​​​二,解题思路​​​​三,AC代码​​​​C++​​​​Java​​​​四,解题过程​​​​第一博​......
  • 计算机组成原理存储系统的简单笔记(思维导图)
    计算机组成原理存储系统的简单笔记(思维导图)前言今天写了一些数据结构的笔记,于是决定顺便把计算机组成原理的存储器部分回顾一下。因为在数据结构的第二部分线性表的顺序结构......
  • MySQL—简单,分组,条件查询
    MySQL1.什么是SQL:结构化查询语言(StructuredQueryLanguage)。2.SQL的作用:客户端使用SQL来操作服务器。启动mysql.exe,连接服务器后,就可以使用sql来操作服务器了。将......
  • 一个简单的ID生成器,请帮忙看看还有那些毛病
    业务系统经常需要生成各种唯一ID,想到UUID、雪花算法等;UUID字符没有含义,掏出来给客户看,比较的很丑;雪花算法是64位的,小业务用户感觉太长了,有点不满意;琢磨了好些天,自己写了......
  • java 简单使用线程池
    定义一个ThreadPoolExecutorprivatefinalBlockingQueue<Runnable>taskQueue=newLinkedBlockingDeque<>();privatefinalThreadPoolExecutorexecutor=newThreadPo......
  • 用 java 简单实现 rpc 通信
    代码不一定能够运行起来,这是在之前的代码中抽象出来的。这里只是说说基本的思路定义消息:packagecom.xiaoyao.game.net.framework.codec;importcom.google.protobuf.Messa......
  • 转载文章 c++调用yolov4模型进行目标检测-使用yolov4官方接口
    前言yolo系列用c写的,在工程中的部署特别方便。4月份yolov4横空出世,之前试了试效果,精度确实有了很大的提升,AB大神nb。最近需要在C++项目中使用yolov4,尝试了opencv的调用(见......