HTTPS和SSL
HTTPS和SSL
参考文章:SSL及其加密通信过程_Jxhacker的博客-CSDN博客_ssl加密过程,SSL协议原理详解_曹世宏的博客-CSDN博客_ssl协议
HTTPS
HTTP(Hyper TEXT Transfer Protocol超文本传输协议)是目前互联网上应用最为广泛的一种网络协议,用于在Web浏览器和网站服务器之间传递信息,但是HTTP协议以明文的方式发送内容,不提供任何数据加密,攻击者能够很轻易通过抓包的方式截取传输内容并读懂其中的信息,所以HTTP不适合传输一些比较私密的信息,为了解决HTTP这一缺陷,HTTPS(Hyper TEXT Transfer Protocol over Secure Socket Layer)协议出现。HTTPS是在HTTP的基础上加入SSL协议。传输以密文传输,保证数据传输的安全以及确认网站的真实性(数字证书)。
SSL
SSL英文全称Secure Socket Layer,安全套接层,是一种为网络通信提供安全以及数据完整性的安全协议,它在传输层对网络进行加密。它主要是分为两层:
- SSL记录协议:为高层协议提供安全封装、压缩、加密等基本功能
- SSL握手协议:用于在数据传输开始前进行通信双方的身份验证、加密算法的协商、交换密钥
OpenSSL是SSL的开源实现,它是作为密码学的安全开发包,提供相当强大全面的功能,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。它一共提供了8中对称加密算法和4中非对称加密算法。
SSL加密过程
- 第一步:客户端A给出
客户端版本
+一个随机数
+自己支持的加密方式
- 第二步:服务器B返回
从客户端支持的加密方式中选择一种
+一个随机数
+安全证书
- 第三步:客户端A验证证书的有效性(以下是验证证书的步骤),然后再生成
一个随机数
,并使用证书中的公钥加密,发送给服务器B- 客户端通过浏览器内置的CA根证书,获取对应CA机构的公钥
- 服务器B返回自己的安全证书,客户端使用CA公钥解密被CA私钥加密的信息得到一个hash值,再使用证书中的hash算法生成hash值,比较两个hash值
- 第四步:服务器B使用私钥解密这个随机数
- 第五步:通过第二步确认的加密方式和第一、二、三步生成的3个随机数生成一个对话秘钥,用于通信。
小结:HTTPS在验证证书阶段使用的是非对称加密(更安全),在数据传输阶段使用对称加密(更高效)。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 柳门竹巷!
评论