从原理到实践:探究HTTPS与HTTP的差异性
一、引言
在互联网时代,我们每天都在与各种网站和应用进行交互,其中涉及到大量的数据传输。
为了保证这些数据的安全性和隐私性,了解HTTP(超文本传输协议)和HTTPS(安全超文本传输协议)的差异显得尤为重要。
本文将详细解析HTTP和HTTPS的原理,并探讨它们在实践中的差异性。
二、HTTP协议原理
HTTP,全称为超文本传输协议(HyperTextTransfer Protocol),是一种应用层的协议。
它基于请求-响应模式,客户端发起请求,服务器响应请求并返回数据。
HTTP协议在互联网上应用广泛,负责传输网页、图片、视频等各种资源。
HTTP协议在传输过程中存在安全隐患,因为它不加密传输的数据,因此容易受到中间人攻击和数据窃取。
三、HTTPS协议原理
HTTPS,全称为安全超文本传输协议(HyperText Transfer Protocol over Secure Socket Layer),是在HTTP的基础上添加了SSL/TLS加密层,以实现数据安全传输的协议。
HTTPS使用SSL/TLS协议对传输的数据进行加密,确保数据在传输过程中的安全性和完整性。
HTTPS采用对称加密和非对称加密技术,以及对公钥证书的认可机制,以确保通信双方的身份认证和数据加密。
四、HTTP与HTTPS的差异性
1. 安全性的差异:HTTP协议不加密传输的数据,容易被中间人攻击和数据窃取。
而HTTPS采用SSL/TLS加密技术,确保数据在传输过程中的安全性。
在实际应用中,HTTPS网站比HTTP网站更安全,可以保护用户的隐私和交易数据。
2. 性能的差异:由于HTTPS需要对数据进行加密和解密,因此在一定程度上会增加CPU的工作量,可能导致网页加载速度略慢于HTTP。
随着硬件性能的提升和SSL/TLS协议的优化,这种性能差异已经逐渐减小。
3. 认证机制的差异:HTTPS采用公钥证书机制进行身份认证,确保通信双方的身份真实可靠。
而HTTP则没有这种认证机制,容易遭受身份伪造和攻击。
在实际应用中,HTTPS确保了网站和服务器的真实性,降低了冒充和欺诈的风险。
4. 实际应用场景的差异:由于HTTP的安全性和认证机制较弱,它主要用于传输不需要加密的数据,如普通的网页浏览和文件下载。
而HTTPS则广泛应用于需要保护用户隐私和交易安全的场景,如电子商务、网上银行、社交媒体等。
五、HTTPS的实践应用
随着网络安全意识的提高,越来越多的网站和应用开始采用HTTPS。
在实际应用中,使用HTTPS可以保护用户的登录信息、交易数据、聊天记录等隐私信息。
HTTPS还可以防止中间人攻击和数据篡改,提高网站和应用的安全性。
例如,电子商务网站和银行应用广泛采用HTTPS,以确保用户的交易数据和隐私安全。
六、结论
HTTP和HTTPS在互联网应用中具有重要的作用。
HTTP主要用于传输不需要加密的数据,而HTTPS则在需要保护用户隐私和交易安全的场景中广泛应用。
了解HTTP和HTTPS的原理和差异性,对于保障网络安全和隐私具有重要意义。
随着网络安全需求的不断提高,相信HTTPS将在未来的互联网应用中发挥更加重要的作用。
谈谈对公钥密码的理解
https其实就是建构在SSL/TLS之上的 http协议,所以要比较https比http多用多少服务器资源,主要看SSL/TLS本身消耗多少服务器资源。
http使用TCP 三次握手建立连接,客户端和服务器需要交换3个包,https除了 TCP 的三个包,还要加上 ssl握手需要的9个包,所以一共是12个包。
http 建立连接,按照下面链接中针对Computer Science House的测试,是114毫秒;https建立连接,耗费436毫秒。
ssl 部分花费322毫秒,包括网络延时和ssl 本身加解密的开销(服务器根据客户端的信息确定是否需要生成新的主密钥;服务器回复该主密钥,并返回给客户端一个用主密钥认证的信息;服务器向客户端请求数字签名和公开密钥)。
SSL handshake latency and HTTPS optimizations. :: 当SSL 连接建立后,之后的加密方式就变成了3DES等对于 CPU 负荷较轻的对称加密方式。
相对前面 SSL 建立连接时的非对称加密方式,对称加密方式对 CPU 的负荷基本可以忽略不记,所以问题就来了,如果频繁的重建 ssl 的session,对于服务器性能的影响将会是致命的,尽管打开https 保活可以缓解单个连接的性能问题,但是对于并发访问用户数极多的大型网站,基于负荷分担的独立的SSL termination proxy就显得必不可少了,Web 服务放在SSL termination proxy之后。
SSL termination proxy既可以是基于硬件的,譬如F5;也可以是基于软件的,譬如维基百科用到的就是 Nginx。
那采用 https 后,到底会多用多少服务器资源,2010年1月 Gmail切换到完全使用 https, 前端处理 SSL 机器的CPU 负荷增加不超过1%,每个连接的内存消耗少于20KB,网络流量增加少于2%。
由于 Gmail 应该是使用N台服务器分布式处理,所以CPU 负荷的数据并不具有太多的参考意义,每个连接内存消耗和网络流量数据有参考意义。
这篇文章中还列出了单核每秒大概处理1500次握手(针对1024-bit 的 RSA),这个数据很有参考意义Heartbleed这个被称作史上最大的网络安全漏洞,想必很多人都有所耳闻,Heartbleed之所以能够出现,其实和我们这个问题关系还不小,前面我们谈到了频繁重建 SSL/TLS的session对于服务器影响是致命的,所以聪明的RFC 在2012年提出了 RFC6520 TLS 的心跳扩展。
这个协议本身是简单和完美的,通过在客户端和服务器之间来回发送心跳的请求和应答,保活 TLS session,减少重建 TLS的session的性能开销。
令人遗憾的是,openssl 在实现这个心跳扩展时,犯了一个低级的错误,没有对收到的心跳请求进行长度检查,直接根据心跳请求长度拷贝数据区,导致简单的心跳应答中可能包含了服务器端的核心数据区内容,用户名,密码,信用卡信息,甚至服务器的私有密钥都有可能泄露。
心因为心跳保活的这个 BUG 在滴血,这个名字起的极度形象。
HTTPS 服务证书 缓存在哪里?
您搞错了,HTTPS协议是来自于CA SSL证书,公网信任证书已经在浏览器信任目录里面,所以您打开网站访问的域名,中间证书与根证书,早就被浏览器信任了,而签发的域名,是在CA服务器里面直接读取信任的,而这个读取匹配是站长与CA之前信任产生的,这个证书的域安装到对应的服务器完成。本地电脑查看证书,开始运行中输入
请教HTTPS代理的工作原理和实现方法
TTP代理是基于TCP的socket连接,就是A无法直接连接C,但B即可以连接A,也可以连接B那么需要B开启他的代理服务,设置服务器并监听端口。
A连接B的80或者8080代理服务器端口,建立socketAB,发送(连接C的WEB请求)到B,B收到该请求后进行解析,然后B去连接C,建立socketBC,并通过socketBC把(连接C的WEB请求)发送给C。
反之依然。
也就是说TCP层知道是A->B->C,但是HTTP封装的包只知道是A->C

