| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> HTTPS详解 -> 正文阅读 |
|
[网络协议]HTTPS详解 |
HTTPS是什么HTTPS是 HTTP + Secure,简单讲是HTTP的安全版,即HTTP下加入TLS/SSL层。 CookieCookie是什么?HTTP是无状态的,不保存之前的信息,当用户在各种页面跳转时,其本质就是进行各种HTTP请求,那么如何让网站照样认识我呢? Cookie就是帮助我们解决网络资源获取的问题。 Cookie是一种保存在客户端的小型文本文件,用于保存服务器通过Set-Cookie字段返回的数据,一旦Cookie被设置好,之后对该网站发起的任何请求,都会自动在request中携带Cookie信息。是HTTP进行客户端状态维护的一种方式。 存在的问题Cookie保存在客户端的,如果别人盗取了我们的Cookie文件,别人就可以以我们的身份进行认证访问特定的资源,如果保存的是我们的用户名密码,那就会更糟糕! 所以单纯的使用Cookie是具有一定的安全隐患的,解决这个问题的核心思路就是:将用户的私密信息保存在服务器端!——通过Session解决 SessionSession的原理提供了一种将用户的私密信息保存在服务器端的技术,当用户通过HTTP请求访问特定服务器时,服务器会把用户的私密信息以一个session文件的形式保存下来,返回响应时,通过Set-Cookie字段,返回给用户一个对应该session文件的唯一的session_id,在之后对服务器的每一个请求中,Cookie字段中放的是session_id,服务器通过识别session_id,读取对应的session文件,从而拿到用户的私密信息,同样达到了保持会话的功能。 虽然现在仍然存在Cookie文件被盗取的风险,但Cookie文件中的数据不在重要,即使别人拿着我们的session_id去访问服务器,服务器也会有一些防御策略。如通过IP地址判断,是否是一个安全的请求。 背景知识加密方式对称加密:密钥只有一个,可以用该密钥对数据加密,但只能使用该密钥解密。 非对称加密:有一对密钥,公钥和私钥。可以用公钥加密,但只能使用私钥解密。或者使用私钥加密,只能使用公钥解密。 一般而言,公钥是全世界公开的,私钥是自己进行私有保存的。 数字签名将数据通过Hash散列得到一个固定长度,唯一的字符序列(称为数据摘要或数据指纹),再对其用密钥进行加密,得到的结果就称为数字签名。 发送端发送数据时,将数据明文与数字签名一起发送给接受端。 接收端通过对数据明文使用相同的Hash散列,得到数据摘要,再对数字签名进行解密,同样得到一份数据摘要,如果两份数据摘要相同,则说明数据没有被篡改,若不同则被篡改,让发送端重发。 CA证书
HTTPS的加密与认证过程有了CA证书,即使在协商密钥阶段被中间人攻击,中间人也无法做出任何有害的举动。就算中间人也是一个合法的服务方,当我们收到发来的证书时,也会对请求网站与证书中的网址进行确认。 加密过程客户端在浏览器中输入一个https网址,然后连接到server的443端口 采用https协议的server必须有一套数字证书(一套公钥和密钥) 首先server将证书(公钥)传送到客户端 客户端解析证书,验证成功,则生成一个随机数(私钥),并用证书将该随机数加密后传回server server用密钥解密后,获得这个随机值,然后将要传输的信息和私钥通过某种算法混合在一起(加密)传到客户端 客户端用之前的生成的随机数(私钥)解密服务器端传来的信息 认证过程首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应的机构,如果没有找到,此时就会提示用户该证书是不是由权威机构颁发,是不可信任的。如果查到了对应的机构,则取出该机构颁发的公钥。 用机构的证书公钥解密得到证书的内容和证书签名,内容包括网站的网址、网站的公钥、证书的有效期等。浏览器会先验证证书签名的合法性。签名通过后,浏览器验证证书记录的网址是否和当前网址是一致的,不一致会提示用户。如果网址一致会检查证书有效期,证书过期了也会提示用户。这些都通过认证时,浏览器就可以安全使用证书中的网站公钥了。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:47:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |