
HTTPS
发布日期:2021-05-08 05:28:21
浏览次数:19
分类:原创文章
本文共 1920 字,大约阅读时间需要 6 分钟。
HTTP协议特点
- HTTP五状态协议
- HTTP协议本身不会对请求和响应之间的通信状态做保存
- 客户端支持的 cookie
- Http 协议中引入了 cookie 技术,用来解决 http 协议无状态的问题。通过在请求和响应报文中写入 Cookie信息来控制客户端的状态
- Cookie 会根据从服务器端发送的响应报文内的一
个叫做 Set-Cookie 的首部字段信息,通知客户端保存 Cookie - 下次客户端再往该服务器
发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去
- 服务端支持的 session
- 在基于 tomcat 这类的 jsp/servlet 容器中,会提供
session 这样的机制来保存服务端的对象状态 - 如果客户端请求不包含 sessionid,则为此客户端创建一个 session 并且生成一个与此 session
相关联的 session id, session id 的值是一个既不会重复,又不容易被找到规律的仿造字符
串,这个 session id 将会返回给客户端保存
- 在基于 tomcat 这类的 jsp/servlet 容器中,会提供
https 安全传输协议
- 由于 HTTP 协议通信的不安全性,所以人们为了防止信息在传输过程中遭到泄漏或者篡改,
就想出来对传输通道进行加密的方式 https。
https 的设计过程
- 对称加密:加密解密用同一个密钥,被黑客拦截不安全
- 非对称加密:私钥加密后的密文,只要有公钥,都能解密,但是公钥加密后的
密文,只有私钥可以解密。私钥只有一个人有,而公钥可以发给所有人(公钥加密,私钥解密;公钥可以公开给别人进行加密,私钥永远在自己手里,非常安全,黑客拦截也没用,因为私钥未公开。著名的RSA加密算法用的就是非对称加密。) - 这样就可以保证 A/B 向服务器端方向发送的消息是安全的,但是
公钥怎么拿?
如何获取公钥
- 服务器端将公钥发送给每一个客户端(传输过程又是不安全的?公钥可能会被调包)
- 服务器端将公钥放到一个远程服务器,客户端可以请求到 (多了一次请求,还得解决公钥
放置问题)
引入第三方机构
- 问题演变成了,客户端如何识别证书的真伪
- 第三方机构的公钥证书存哪里
- 浏览器和操作系统都会维护一个权威的第三方机构列表(包括他们的公钥)
因为客户端接收到的证书中会些颁发机构,客户端就根据这个办法机构的值在本地找到响应
的公钥
- 浏览器和操作系统都会维护一个权威的第三方机构列表(包括他们的公钥)
- 待续
Https 原理分析
HTTPS 证书的申请过程
- 服务器上生成 CSR 文件(证书申请文件,内容包括证书公钥、使用的 Hash 签名算法、申
请的域名、公司名称、职位等信息) - 待续
类比平时我们生成秘钥对登录:
SSH即利用的RSA(非对称加密)+AES(对称加密)
- RSA被用来在会话初始化阶段为通信双方进行会话秘钥的协商
- 由于非对称加密的计算量开销比较大,因此一旦双方的会话秘钥协商完成,后续的加密都将采用AES加密进行
- 使用tcpdump+wireshark抓包并查看ssh建联过程
SSH的实现
- 基于口令的认证
- 第一次登录的时候,client要对server的公钥进行认证。(https中可以通过CA进行公正,可是SSH的publish key和private key都是自己生成的,没法公正,只能通过Client端自己对公钥进行确认
- 基于公钥认证
- 口令认证,每次登陆都需要输入密码。基于公钥认证,不需要输入口令密码,但是需要Client端手动copy public key到Server端。然后进行认证
附平时我们生成秘钥对的具体操作
-
生成RSA私钥
ssh-keygen -t rsa -b 4096 -C JimLiang
入秘钥对名称(1213),以及密码(269686494@qq.com)回车;
注意:按照用户名__服务器分类命名秘钥对,后续同一类服务器可以用相同的key登录即可。 -
将生成的秘钥pub文件内容添加到linux服务器
- 为root用户添加秘钥对: 把.pub 文件内容添加至/root/.ssh/authorized_keys
中,注意追加添加即可;( cat id_dsa.pub >> ~/.ssh/authorized_keys) - 为其他用户添加秘钥对,如为testuser添加秘钥对,
则将pub文件添加至/home/testuser/.ssh/authorized_keys中,同样为追加添加;
- 为root用户添加秘钥对: 把.pub 文件内容添加至/root/.ssh/authorized_keys
SSH和HTTPS的区别
- SSH的原理和HTTPS差不多,都是基于TCP和非对称加密进行的应用层协议
- HTTPS通过数字证书和数字证书认证中心来防止中间人攻击,SSH服务器的公钥没有人公正,只能通过Client人工确认Server端的公钥指纹来确认身份
发表评论
最新留言
很好
[***.229.124.182]2025年04月07日 18时10分56秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Hibernate Validator常用注解
2019-03-05
Redis分布式锁原理
2019-03-05
学习SSM中ajax如何与后台传数据
2019-03-05
【备份】求极限笔记
2019-03-05
【备份】概率论笔记备份
2019-03-05
ES6模块化与commonJS的对比
2019-03-05
C++学习记录 四、基于多态的企业职工系统
2019-03-05
C++学习记录 五、C++提高编程(2)
2019-03-05
面试问道nginx优化怎么做的
2019-03-05
自学linux毕业shell面试题
2019-03-05
4 Java 访问控制符号的范围
2019-03-05
第9章 - 有没有替代原因(检验证据)
2019-03-05
VUE3(八)setup与ref函数
2019-03-05
Vue之Element标签页保留用户操作缓存。
2019-03-05
智能合约开发实践(1)
2019-03-05
2. Spring Boot学习——Yaml等配置文件教程
2019-03-05
3. Spring Boot教程——日志学习
2019-03-05
MATLAB——操作矩阵的常用函数
2019-03-05
【C++】Essential c++ 第四章学习笔记
2019-03-05
CMake自学记录,看完保证你知道CMake怎么玩!!!
2019-03-05