这是转载别人的(转:崔永秀)

把这几天学习到的关于ssl和https协议的内容在这里分享一下,适合一些像我一样的网络协议初学者。

ssl协议的起源和历史我就不再多说了,就是那个Netscape 网景公司开发的,它的作用主要是提供了一种安全传输方式,我们知道网上有很多的时候需要我们去输入用户名和密码,那么假设我们自己的电脑防病毒还可以,但是用户名和密码肯定还是要通过互联网来传到服务器那里,这个步骤就要经过很多的路由等,如果明文传输,就可以在你的局域网内或者通过的路由中监听,窃取你的用户名密码。

SSL协议位于TCP/IP协议与各种应用层协议之间。当我们打开一个https的网页时,步骤如下:

1. 客户端通过SSL协议把服务器需要的客户端的SSL版本信息,加密算法设置,会话数据,发送给服务器。

2. 服务器通过SSL协议把自己的SSL的版本信息,加密算法设置,会话数据和其他通信需要的信息发给客户端。服务器也把服务器的证书发给客户端,另外如果客户端请求服务器资源需要客户端认证,服务器端就会请求客户端的证书。

3. 客户端使用这些服务器发来的信息认证服务器。如果服务器不能被认证,那么客户将被提示一个警告,并且通知客户不能建立加密和认证连接。如果服务器被成功认证,客户端将进入第四步。

4. 使用到目前为止的所有数据生成握手过程。客户端(和服务器合作之下)为会话创建一个pre-master secret(一个用在对称加密密钥生成中的 46 字节的随机数字)。使用服务器的公共密钥加密(在第二步的服务器的证书中获得公共密钥),然后把这个加了密的pre-master secret发送给服务器。

5. 如果服务器请求客户端认证(在握手过程是可选项),客户端也需要标记一个特殊的数据包,客户端和服务器都知道的。在这个过程中,客户端发送一个通过pre-master secret加密过的标记的数据包和客户端自己的证书给服务器。

6. 如果服务器请求了客户端的认证,那么服务器就要尝试去认证客户端。(具体的看客户端认证细节)如果客户端认证不通过,会话将被终止。如果客户端被认证通过,服务器将使用私有密钥解密pre-master secret,然后执行一系列步骤生成master secret

7. 客户端和服务器端使用master secret去生成会话密钥。会话密码是在ssl 会话的时候对称密钥被用来加密,解密信息校验信息完整性的密钥。(检查会话过程中任何数据改变)

8. 客户端发送一个信息给服务器端,通知服务器端未来的信息将被会话密码加密,然后客户端发送一个单独(加密)信息指示客户端部分的握手会话已经完成。

9. 服务器发送一个信息通知客户端未来的会话信息将被会话密码加密,然后服务器发送一个单独(加密)信息指示服务器部分的握手部分已经完成

10. SSL握手结束,开始正式会话。客户端和服务器端使用对称会话密钥加密解密数据并且互相传送校验完整性。

11. 这是一个正常的操作过程和加密隧道。在任何时候,当内部或者外部触发条件(不是自动就是用户手动),任何一端就要从新协商会话,所有的流程将从新开始。

有几个问题我在学过之后一直在考虑:

1. 如果中间的路由从双方发送证书的时候就开始监听的话呢,是否就可以窃取内容了?

答:否,服务器那边有一个非对称密钥加密系统,首先他将公开密钥发送给客户端,客户端接收之后为会话创建一个pre-master secret(一个用在对称加密密钥生成中的 46 字节的随机数字),然后用服务器发送过来的公开密钥加密,然后将加密后的内容发送给服务器,这两个阶段,如果有人监听,即使窃取到也没办法,首先公开密钥对所有人其实都是公开的,用公开密钥加密后的内容是非常非常难解密的,只有用服务器自己有的私有密钥解密才可以。服务器获取到46字节的随机数字之后,通过这个来对将来要发送的加密内容加密,而这个解密方法之后对应的那个客户端才知道,钥匙是通过公开密钥加密的,其他人都不知道,所有就保证了内容的安全性。

2. 我们自己建设的网站有时会使用没有正式证书的ssl加密,浏览器会提醒用户,默认建议关闭,证书是必要的吗?

答:经过认证的证书其实就是确保网站的真实性,还有一些专门的使地址栏显示为绿色的也都是确保网站的真实性,防止一些页面一模一样的钓鱼网站。

3. 用ssl协议之后,我们输入用户名密码就绝对安全了吗?

答:否,ssl协议只能保证server和client传输之间的安全,如果你的电脑有木马病毒,例如监听键盘,浏览器恶意插件等,ssl可管不了这些。。。还有如果server收到攻击,它的信息流失丢掉,这也不能保证的。

 

HTTPS和SSL详解的更多相关文章

  1. SEO方式之HTTPS 访问优化详解

    SEO到底要不要做HTTPS?HTTPS对SEO的重要性 正方观点 1.HTTPS具有更好的加密性能,避免用户信息泄露: 2.HTTPS复杂的传输方式,降低网站被劫持的风险: 3.搜索引擎已经全面支持 ...

  2. HTTPS 传输优化详解之动态 TLS Record Size

    笔者在过去分析了诸多可以减少 HTTPS 传输延迟的方法,如分布式 Session 的复用: 启用 HSTS,客户端默认开启 HTTPS 跳转:采用 HTTP/2 传输协议:使用 ChaCha20-P ...

  3. https+ssl详解

    这是转载别人的写的很好,(转:崔永秀) 把这几天学习到的关于ssl和https协议的内容在这里分享一下,适合一些像我一样的网络协议初学者. ssl协议的起源和历史我就不再多说了,就是那个Netscap ...

  4. nginx配置ssl证书实现https加密请求详解

    原文链接:http://www.studyshare.cn/software/details/1175/0 一.加密方式 1.对称加密 所谓对称加密即:客户端使用一串固定的秘钥对传输内容进行加密,服务 ...

  5. Apache SSL服务器配置SSL详解(转)

    1.安装必要的软件 引用 我用的是apahce2.0.61版,可以直接官方提供的绑定openssl的apache. 文件名是:apache_2.0.61-win32-x86-openssl-0.9.7 ...

  6. http和Https简介、详解

    目录 引用 一.HTTP和HTTPS的基本概念 二.HTTP与HTTPS有什么区别? 三.HTTPS的工作原理 四.HTTPS的优点 五.HTTPS的缺点 六.http切换到HTTPS 引用 超文本传 ...

  7. HTTP和HTTPS协议,详解

    大纲 一.前言: 先来观察这两张图,第一张访问域名http://www.12306.cn,谷歌浏览器提示不安全链接,第二张是https://kyfw.12306.cn/otn/regist/init, ...

  8. SSL详解

    SSL 1.整体结构 SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下 SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Int ...

  9. fiddler抓取https的请求详解

    本文主要说明了自己在设置fiddler抓取https过程中所遇到的问题及解决步骤,特别是fiddler在设置证书的环节遇到的各种奇葩问题,特此分享! 声明:本文为原创文章,转载请注明来源:https: ...

随机推荐

  1. linux 命令学习-网络相关配置

    网络配置相关 网卡配置文件:etc/sysconfig/network-scripts/ifcfg-eth0 DNS 配置文件 etc/resolv.conf 主机配置文件 etc/sysconfig ...

  2. hbase项目

    四.HBase 项目4.1.涉及概念梳理:命名空间4.1.1.命名空间的结构 1) Table:表,所有的表都是命名空间的成员,即表必属于某个命名空间,如果没有指定, 则在 default 默认的命名 ...

  3. linux 挂载和使用文件系统

    从分区,到创建文件系统,再到把磁盘或分区挂载到一个目录后才能够使用. Windows或Mac系统会自动进行挂载,一旦创建好文件系统后会自动挂载到系统上,Windows我们称之为C\D盘,而Linux需 ...

  4. 文字编码ASCII,GB2312,GBK,GB18030,UNICODE,UCS,UTF的解析

    众所周知,一个文字从输入到显示到存储是有一个固定过程的,其过程为:输入码(根据输入法不同而不同)→机内码(根据语言环境不同而不同,不同的系统语言编码也不一样)→字型码(根据不同的字体而不同)→存储码( ...

  5. Backup--清理MSDB中的备份记录

    每次数据库备份或日志备份,都会向msdb中多多张表插入数据,如果备份比较频繁的话,需要定期清理. 使用sp_delete_backuphistory来清理以下表中数据: backupfile back ...

  6. requirejs 配制

    baseUrl: 用来配制动态加载脚本时,脚本文件的起始位置,此属性可以指定值,也可以由 requirejs 自动计算出值: 1:不进行任何配制: 假如 a.html 中引用 require.js 文 ...

  7. Python 振动分析 迭代法计算高阶特征值及特征向量

    参考书 : <<振动分析>> 张准 汪凤泉 编著 东南大学出版社 ISBN 7-80123-583-4 参考章节 : 4.6.2 和 4.6.3 <<数值分析> ...

  8. docker-compose 命令

    docker-compose初试及命令基础 以一个简单的lnmp.yaml的配置文件进行讲解docker-compose命令的基础讲解,熟练掌握命令 [root@docker lnmp]# cat l ...

  9. [Perl]Can't link/include C library 'ft2build.h', 'freetype', aborting.

    原文:http://www.code-by.org/viewtopic.php?f=60&t=284 错误提示 Font-FreeType-0.07>perl Makefile.PL B ...

  10. Python扫描邮件主题,并打印

    import imaplib import email from email.header import decode_header import datetime if __name__ == '_ ...