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. H5小程序不同页面之间通讯解决方案

    小程序做开发的时候难免需要不同页面之间的通讯,比如首页打开新的页面搜索获取结果返回到首页,不同tab页面之间的数据交互等等.于是做了以下总结 打开新的页面可以通过 navigator 组件来实现,通过 ...

  2. puppet 3+Unicorn+Nginx安装配置

    puppet 3+Unicorn+Nginx安装配置 2014-08-15 10:58 酒瓶不倒 酒瓶不倒的博客 字号:T | T 一键收藏,随时查看,分享好友! Unicorn 效率要比 Webri ...

  3. 如何利用fiddler4 抓取手机的数据包

    1.安装fiddler . 2.设置fiddler  .tool==> option里面  https 要打开,然后选择actions 第一个 安装本地证书: 3.设置手机访问的数据都要经过fi ...

  4. css-滚动条常用的样式修改

    // ::-webkit-scrollbar { /*滚动条整体样式*/// width: 10px; /*宽分别对应竖滚动条的尺寸*/// height: 5px; /*高分别对应横滚动条的尺寸*/ ...

  5. yii 创建模块module

    yii安装完成后的使用: yii也是单入口脚本, 入口文件为  http://hostname/web/index.php 使用模块: 在根目录下创建modules目录 在modules目录下创建模块 ...

  6. lnmp环境搭建(Ubuntu)

    dpkg   -l | grep  gcc   ubuntu系统查看已安装的包 dpkg  -S  nginx   查看安装的nginx apt-get  update            首先更新 ...

  7. MacBook pro管理员变成普通用户无法解锁问题

    最近使用Mac的时候,把管理员的名字修改了一下,WTF?没有管理员权限了?然后就没有解锁权限了,这可以说是Mac的一个致命bug呀!下载软件也不可以了.具体我的解决方式在这里记录一下,以供和我遇到同样 ...

  8. HZOJ 20190719 那一天她离我而去(图论最小环)

    这题算是这场考试里最水的一道题了吧,就是求个最小环,但之前没练过,就在考场上yy出了最短路+次短路的傻逼解法,首先是不会求次短路,其次是这显然不对呀,自己随便想想就可以反驳这种解法. 正解比较神,但是 ...

  9. ubuntu安装mysql 5.7

    1.安装mysql sudo apt-get install mysql-client mysql-server 2.启动 service mysqld start 3.登陆 mysql -uroot ...

  10. win10 c++程序打包

    步骤如下: 1. 先动态编译连链接,生成exe: 2. 找到exe依赖的dll文件 使用Process Explore来获取所依赖的dll文件 打开procexp.exe,通过菜单View–Lower ...