把这几天学习到的关于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加密过的标记的数据包和客户端本身的证书给服务器。ui
6. 若是服务器请求了客户端的认证,那么服务器就要尝试去认证客户端。(具体的看客户端认证细节)若是客户端认证不经过,会话将被终止。若是客户端被认证经过,服务器将使用私有密钥解密pre-master secret,而后执行一系列步骤生成master secret加密
7. 客户端和服务器端使用master secret去生成会话密钥。会话密码是在ssl 会话的时候对称密钥被用来加密,解密信息校验信息完整性的密钥。(检查会话过程当中任何数据改变)
8. 客户端发送一个信息给服务器端,通知服务器端将来的信息将被会话密码加密,而后客户端发送一个单独(加密)信息指示客户端部分的握手会话已经完成。
9. 服务器发送一个信息通知客户端将来的会话信息将被会话密码加密,而后服务器发送一个单独(加密)信息指示服务器部分的握手部分已经完成
10. SSL握手结束,开始正式会话。客户端和服务器端使用对称会话密钥加密解密数据而且互相传送校验完整性。
11. 这是一个正常的操做过程和加密隧道。在任什么时候候,当内部或者外部触发条件(不是自动就是用户手动),任何一端就要重新协商会话,全部的流程将重新开始。
有几个问题我在学过以后一直在考虑:
答:否,服务器那边有一个非对称密钥加密系统,首先他将公开密钥发送给客户端,客户端接收以后为会话建立一个pre-master secret(一个用在对称加密密钥生成中的 46 字节的随机数字),而后用服务器发送过来的公开密钥加密,而后将加密后的内容发送给服务器,这两个阶段,若是有人监听,即便窃取到也没办法,首先公开密钥对全部人其实都是公开的,用公开密钥加密后的内容是很是很是难解密的,只有用服务器本身有的私有密钥解密才能够。服务器获取到46字节的随机数字以后,经过这个来对未来要发送的加密内容加密,而这个解密方法以后对应的那个客户端才知道,钥匙是经过公开密钥加密的,其余人都不知道,全部就保证了内容的安全性。
答:通过认证的证书其实就是确保网站的真实性,还有一些专门的使地址栏显示为绿色的也都是确保网站的真实性,防止一些页面如出一辙的钓鱼网站。
答:否,ssl协议只能保证server和client传输之间的安全,若是你的电脑有木马病毒,例如监听键盘,浏览器恶意插件等,ssl可管不了这些。。。还有若是server收到攻击,它的信息流失丢掉,这也不能保证的。