1,在理解 HTTPS SSL TLS 之前先对常用的加密方式进行一个简述:

  (1),对称加密: 采用一个密钥,对明文进行加密生成密文,相反采用此密钥可对加密后的密文进行解密还原成明文.

代表算法有,DES,3DES,AES 等

  (2),非对称加密: 公钥加密,私钥解密. 网上有个比喻很形象(公钥好比一把开着的锁头, 私钥好比这把锁头的钥匙全世界就只有一把钥匙,由你保管,

若要与人通信,将锁头给别人好了.别人拿到这个锁头将重要信息锁在起来.然后全世界就只有你一个人能打开这个锁)

代表算法有,RSA ,DSA 等.

  (3),摘要算法: 即将明文数据通过摘要算法生成一小段(固定长度)密文数据. 但通过密文无法还原程明文,算法不可逆.

通常用来验证明文数据是否完整,是否正确.

代表算法:MD5 ,SHA

2,思考: 了解上述之后我们要登录我们的支付宝,网银等,要怎样去实现.

(1),采用对称加密???  访问, 支付宝,网银等,服务端和客户端双方约定一个密钥. 服务端客户端通过这个密钥进行加密和解密.

        问题来了: 服务端和客户端怎么去协商密钥 ? 服务端生成密钥然后告知给客户端 ? 或者客户端生成后发送给服务端?

当然这样行不通:发送过程中如果被其他人抓到网络包后很容易就看出密钥了.

(2), 采用非对称加密 ??? , 服务端生成公钥,和私钥.将公钥通过网络传输给客户端,客户端通过公钥将

帐号密码等信息加密 发送给服务端 ???

问题来了: (1),这个只能单方面客户端发送重要信息给服务端. 如果服务端要发送重要信息给客户端怎么办?

(2),答案有人可能想到了服务端和客户端,都各生成一对公钥和私钥, 然后再交换公钥,这不就妥了.

没错这样是可以进行保密传送. 但是这样也带来了性能上的问题.如果是传送大量的数据时.

可能会影响性能.

(3),采用摘要算法 : 这就更不可能了.摘要算法只能保证数据的正确性和完整性.

4,结论:

    通过以上分析.有人可能已经有了结果 : 采用单种的加密方式不能达到目的,如果把他们配合使用不就ok了.

没错HTTPS ,SSL 就是这样一个东西: 采用 对称加密进行传输加密数据,用非对称加密来交换对称加密所使用的密钥.

当然为了保证你访问的网站是正确的,即 防止将帐号密码等信息交给钓鱼网站. 数字证书应运而生了.

数字证书确保您是再与一个可信的人(可信的网站)在交流. 是在与一个值得托付终身的人在恋爱.

以下具体的步骤来源与互联网, 展示HTTPS SSL 等交互流程

  (1). 客户端发起HTTPS请求

  这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到server的443端口。

  (2). 服务端的配置

  采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。这套证书其实就是一对公钥和私钥。如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

  (3). 传送证书

  这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

  (4). 客户端解析证书

  这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值。然后用证书对该随机值进行加密。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

  (5). 传送加密信息

  这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

  (6). 服务段解密信息

  服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

  (7). 传输加密后的信息

  这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

  (8). 客户端解密信息

  客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。

HTTPS SSL TLS 相关理解的更多相关文章

  1. 简而意赅 HTTP HTTPS SSL TLS 之间有什么不同

    HTTP HTTPS SSL TLS 之间有什么不同? SSL是Secure Sockets Layer的缩写.SSL的作用是为网络上的两台机器或设备提供了一个安全的通道. TLS是SSL的一个新的名 ...

  2. 在 ASP.NET MVC 中使用 HTTPS (SSL/TLS) -- 学习

    在 ASP.NET MVC 中使用 HTTPS (SSL/TLS) IS 7如何实现http重定向https HTTPS 升级指南

  3. [skill][https][ssl/tls] HTTPS相关知识汇总

    结论前置: A 身份验证 证书, 服务器证书 B 密钥协商 RSA   DHE / ECDHE   PSK C 加密通信 加密通信采用对称加密,使用B阶段协商出来的密钥. B 阶段如果使用 RSA 协 ...

  4. HTTPS(SSL/TLS) 原理之深入浅出

    注:本文参考自网络上的多篇HTTPS相关文章,本人根据自己的理解,进行一些修改,综合. 1. 必要的加密解密基础知识 1)对称加密算法:就是加密和解密使用同一个密钥的加密算法.因为加密方和解密方使用的 ...

  5. HTTPS SSL/TLS协议

    要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接 ...

  6. iOS https(SSL/TLS)数据捕获

    要捕获iPhone上的appstore的数据还真的没那么容易,以前介绍的那些使用代理手工导入证书的方法已经完全失效了,结果就是安装证书之后再打开appstore也无法正常的建立连接.按照我的分析其实是 ...

  7. 在 ASP.NET MVC 中使用 HTTPS (SSL/TLS)

    某些安全性较高的网页,如网上支付或用户登陆页面,可能会使用到https(SSL/TLS)来提高安全性.本文介绍了如何在ASP.NET MVC中强制某action使用https和如何进行向https页面 ...

  8. https ssl(tls)为什么不直接用公钥加密数据?

    很多人都提到了非对称加密速度慢,但这只是一个原因,但不是主要原因,甚至是微不足道的原因. SSL协议到3.0后就已经到头了,取而代之的是TLS,相较于SSL的"安全套接字层"的命名 ...

  9. Nginx+HTTPS(SSL/TLS)

    环境 首先确保机器上安装了openssl和openssl-devel rpm -qa | grep openssl #yum install openssl #yum install openssl- ...

随机推荐

  1. vue的store状态管理模式

    var store = { debug: true, state: { message: 'Hello!' }, setMessageAction (newValue) { //所有 store 中 ...

  2. router-link to 动态赋值

    路由定义: 动态赋值: <router-link :to="{path:'/old_data_details/params/'+item.id}" > </rou ...

  3. robotframework FOR循环

    #获取到的ID组装成一个list ${List_ID} Create List ${ID_1} ${ID_2} ${ID_3} ${ID_4} ${ID_5} ... ${ID_6} ${ID_7} ...

  4. 基于locust的性能测试平台搭建

    前段时间加入性能测试组,并参与搭建基于locust的性能测试平台,我分到的任务相对独立,开发locust的启动接口和停止运行接口,现开发的差不多了,做一个总结 一.locust运行的相关内容 二.lo ...

  5. springboot错误1 Failed to execute goal org.springframework.boot:spring-boot-maven-plugin

    关于Springboot打包错误的问题 | Failed to execute goal org.springframework.boot:spring-boot-maven-plugin https ...

  6. hdu 5821 Ball 思维题

    Ball Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submis ...

  7. Js模块化开发--seajs和gruntJs

    1.Seajs库 解决开发中的冲突依赖等问题,提供代码可维护性. SeaJS 是由玉伯开发的一个遵循 CommonJS 规范的模块加载框架,可用来轻松愉悦地加载任意 JavaScript 模块和css ...

  8. [笔记]共享内存(shm)

    一.特点 共享内存允许多个不同的进程可以访问同一块内存.相较于其他IPC形式,具有速度快,效率高的特点,共享内存的存在降低了在大规模数据处理过程中内存的消耗. 二.创建共享内存 1.头文件 #incl ...

  9. CentOS修改Mysql字符集

    1.mysql>show variables like 'character_set%'; 显示如下: +--------------------------+----------------- ...

  10. LeetCode 80. 删除排序数组中的重复项 II(Remove Duplicates from Sorted Array II)

    题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...