1. 为什么需要HTTPS?
1) 保护隐私(Privacy):所有信息都是加密传播,第三方无法窃听数据。如果使用 HTTP 明文传输数据的话,很可能被第三方劫持数据,那么所输入的密码或者其他个人资料都被暴露在他人面前,后果可想而知。
2) 数据完整性(Integraty):一旦第三方篡改了数据,接收方会知道数据经过了篡改,这样便保证了数据在传输过程中不被篡改。
3) 身份认证(Identification):第三方不可能冒充身份参与通信,因为服务器配备了由证书颁发机构(Certificate Authority,简称 CA)颁发的安全证书,可以证实服务器的身份信息,防止第三方冒充身份。.
2. 什么是HTTPS?
HTTPS(HyperText Transfer Protocol Secure)是在HTTP上建立SSL/TLS加密层,并对传输数据进行加密,是HTTP协议的安全版。现在它被广泛用于万维网上安全敏感的通讯,例如某宝交易支付。
HTTPS = HTTP + SSL/TLS
HTTPS协议相比HTTP协议的优势:
1) 数据隐私性:内容经过对称加密,每个连接生成一个唯一的加密密钥
2) 数据完整性:内容传输经过完整性校验
3) 身份认证:第三方无法伪造服务端(客户端)身份
3. SSL/TLS 的工作原理
加密算法有两种:对称加密、非对称加密
1) 对称加密:通信双方使用相同的密钥进行加密。特点是加密速度快,但是缺点是需要保护好密钥,如果密钥泄露的话,那么加密就会被别人破解。常见的对称加密有 AES,DES 算法。
2) 非对称加密:它需要生成两个密钥:公钥(Public Key)和私钥(Private Key)。常见的非对称算法有 RSA。
HTTPS采用对称加密和非对称加密两者并用的混合加密机制。
4. 解决报文可能遭篡改问题——数字签名
网络传输过程中需要经过很多中间节点,虽然数据无法被解密,但可能被篡改,那如何校验数据的完整性呢?
数字签名:
1) 能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。
2) 数字签名能确定消息的完整性,证明数据是否未被篡改过。
5. HTTP 与 HTTPS 的区别
1) HTTPS比HTTP更加安全,对搜索引擎更友好,利于SEO,谷歌、百度优先索引HTTPS网页;
2) HTTPS需要用到SSL证书,而HTTP不用;
3) HTTPS标准端口443,HTTP标准端口80;
4) HTTPS基于传输层,HTTP基于应用层;
5) HTTPS在浏览器显示绿色安全锁,HTTP没有显示;
6. 为何不所有的网站都使用HTTP?
1) HTTPS实施有门槛,这个门槛在于需要权威CA颁发的SSL证书。从证书的选择、购买到部署,传统的模式下都会比较耗时耗力。
2) HTTPS普遍认为性能消耗要大于HTTP,因为与纯文本通信相比,加密通信会消耗更多的CPU及内存资源。如果每次通信都加密,会消耗相当多的资源,平摊到一台计算机上时,能够处理的请求数量必定也会随之减少。但事实并非如此,用户可以通过性能优化、把证书部署在SLB或CDN,来解决此问题。
举个实际的例子,“双十一”期间,全站HTTPS的淘宝、天猫依然保证了网站和移动端的访问、浏览、交易等操作的顺畅、平滑。通过测试发现,经过优化后的许多页面性能与HTTP持平甚至还有小幅提升,因此HTTPS经过优化之后其实并不慢。
3) HTTPS需要购买证书。要进行HTTPS通信,证书是必不可少的。而使用的证书必须向认证机构(CA)购买。
简单的加密算法有:
BASE64 严格地说,属于编码格式,而非加密算法
MD5(Message Digest algorithm 5,信息摘要算法)
SHA(Secure Hash Algorithm,安全散列算法)
HMAC(Hash Message Authentication Code,散列消息鉴别码)
7. 总结
相较于HTTP协议,HTTPS确保了报文的机密性以及完整性。HTTPS确保这些的依赖就是SSL/TSL协议,SSL/TSL安全协议搭配数字证书保证了报文在传输过程中的绝对安全。