【图解Http 学习摘要】五、HTTPS 中的加密、证书介绍,不一直使用 HTTPS 的原因

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【图解Http 学习摘要】五、HTTPS 中的加密、证书介绍,不一直使用 HTTPS 的原因

在上一文中,讲述了 HTTP 的种种安全性问题,要解决的话,就要用 HTTPS。


HTTP 加上加密处理认证以及完整性保护后即是 HTTPS。


1268169-20210704223808136-673746358.png


经常会在 Web 的登录页面和购物结算界面等使用 HTTPS 通信,比如打开淘宝的登录页。

1268169-20210704223908715-2092861157.png



  • 使用 HTTPS 通信时,不再用 http://,而是改用 https://


  • 当浏览器访问 HTTPS 通信有效的 Web 网站时,浏览器的地址栏内会出现一个带锁的标记。


一、HTTPS 是身披 SSL 外壳的 HTTP


首先要明确:HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用 SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。


1268169-20210704225259501-1432383699.png


  • 通常,HTTP 直接和 TCP 通信。
  • 当使用 SSL时,则演变成先和 SSL 通信,再由 SSL 和 TCP 通信了。

SSL 是独立于 HTTP 的协议。


所以,不光是 HTTP 协议,其他运行在应用层的协议,比如 SMTP 和 Telnet 等,均可配合 SSL 协议使用。可以说 SSL 是 当今世界上应用最为广泛网络安全技术。


二、相互交换密钥的公开密钥加密技术


SSL 采用一种叫做公开密钥加密(Public-key cryptography)的加密处理方式。

不过在继续了解之前,先看下这2种:


  • 共享密钥加密
  • 公开密钥加密


1. 共享密钥加密


加密和解密同用一个密钥(也叫对称密钥加密),加密时必须将密钥也发给对方,那么如何安全地把密钥交给对方是个问题。


1268169-20210704231044366-919531602.png


  • 如果在互联网上转发密钥时,通信被监听,那么密钥就可会落入攻击者之手,同时也就失去了加密的意义。
  • 此外,接收方还得设法安全地保管接收到的密钥。


2. 公开密钥加密


针对上面的问题,于是有了公开密钥加密方式。解决思路也很简单:既然担心密钥在发送过程中被盗走,那么我不发送密钥不就解决了?


于是,公开密钥加密使用一对非对称的密钥,分别是:


  • 私有密钥 (private key):私有密钥不能让其他任何人知道。
  • 公开密钥(public key):公开密钥则可以随意发布,任何人都可以获得。

交互过程是这样的(发送密文方A,接收方B):


  1. A 使用 B 的公开密钥进行加密。
  2. A 发送加密后的信息给 B。
  3. B 收到加密的信息后,用自己的私有钥匙进行解密。


利用这种方式,不需要发送用来解密的私有密钥,也就不必担心密钥被攻击者窃听而盗走。


另外,就算你知道了公开密钥密文,想要恢复到信息原文是异常困难的。


因为解密过程就是在对离散对数进行求值,这并非轻而易举就能办到。


再退一步讲,如果能对一个非常大的整数做到快速地因式分解,那么密码破解还是存在希望的。但就目前的技术来看是不太现实的。


1268169-20210704232632404-1160220606.png


3. HTTPS 采用混合加密机制


HTTPS 采用以上2种加密方式的混合加密机制


因为,公开密钥加密处理起来比共享密钥加密更加复杂,因此在通信中使用时,效率就更低


所以应充分利用两者各自的优势:


  • 交换密钥环节使用公开密钥加密方式。
  • 之后的建立通信交换报文阶段则使用共享密钥加密方式。


1268169-20210704233725838-2021248494.png


三、证明公开密钥正确性的证书


环环相扣,在上述的公开密钥加密方式还是存在一些问题:


  • 无法证明公开密钥本身就是货真价实的公开密钥。


比如,A 整准备和 B 服务器建立公开密钥加密方式下的通信,A 也确实收到了公开密钥。但是 A 不知道这个公开密钥是不是真的来自于 B,或许在传输途中,真的公开密钥已经被攻击者替换掉了。


于是,为了解决这个问题,需要使用由数字证书认证机构(CA,Certificate Authority)和其相关机关颁发的公开密钥证书


1. 什么是 数字证书认证机构?


是处于客户端与服务器双方都可信赖的第三方机构,比如威瑞信(VeriSign)。

业务流程


  1. 首先,服务器把自己的公开密钥登录至机构。
  2. 机构用自己的私有密钥像服务器的公开密钥数字签名,并颁发公钥证书(服务器公开密钥+机构的数字签名)。
  3. 服务器将证书发送个客户端。
  4. 接收到证书的客户端,使用机构的公开密钥对证书上的数字签名进行验证。

一旦验证通过,就说明:


  • 认证服务器的公开密钥的是真实有效的数字证书认证机构。
  • 服务器的公开密钥是值得信赖的。


OK,看起来很不错。但是在服务器转交认证的公开密钥给客户端的时候,如何安全转交也是一件困难的事情。


既然转交过程有风险,那么尽量不转交。因此,多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥


万事大吉后,客户端就可以使用公开密钥对报文加密后发送了,服务器收到后再用私有密钥对报文解密即可。


2. 证书的类型


  • 可证明组织真实性的 EV SSL 证书


证书的一个作用是用来证明作为通信一方的服务器是否规范,另外一个作用是可确认对方服务器背后运营的企业是否真实存在,EV SSL证书就有此特性。


  • 用以确认客户端的客户端证书
    HTTPS 中还可以使用客户端证书。以客户端证书进行客户端认证,证明服务器正在通信的对方始终是预料之内的客户端。这个在一些网上银行会有,比如登录网银时不仅 要求用户确认输入 ID 和密码,还会要求用户的客户端证书,就是用来确认用户是否从特定的终端访问网银。


  • 由自认证机构颁发的证书称为自签名证书
    通过使用 OpenSSL这套开源程序,每个人都可以构建一套属于自己的认证机构,从而自己给自己颁发服务器证书。但是这种证书浏览器很可能不认,访问时会显示“无法确认连接安全性”或“该网站的安全证书存在问题”等警告消息。


按理说,认证机构信誉第一,信用要绝对可靠。但是也存在遭到黑客入侵的风险。2011 年 7 月,荷兰的一家名叫 DigiNotar 的认证机构曾遭黑客不法入侵,颁布了 google.com 和 twitter.com 等网站的伪造证书事件。这一事件从根本上撼动了 SSL的可信度。


四、使用 SSL 影响了速度


SSL的慢分两种:通信慢、处理速度慢。


通信慢


和使用HTTP相比,HTTPS 除去和 TCP 连接、发送 HTTP 请求 • 响应以外,还必须进行 SSL通信,所以整体上处理通信量会增加。


相比之下,HTTPS 比 HTTP 要慢 2 到 100 倍


处理速度慢


由于 HTTPS 还需要做服务器、客户端双方加密、界面处理,因此会消耗更多的CPU和内存等硬件资源。


对此,没有根本性解决方案。不过有一种 SSL加速器(专用服务器)硬件可以来改善该问题。该硬件为 SSL通信专用硬件,相对软件来讲,能够提高数倍 SSL 的计算速 度。仅在 SSL 处理时发挥 SSL 加速器的功效,以分担负载。


五、为什么不一直使用 HTTPS


灵魂拷问:既然 HTTPS 那么安全可靠,那为何所有的 Web 网站不一直使用 HTTPS ?


原因 1


与纯文本通信相比,加密通信会消耗更多的 CPU 及内存资源。如果每次通信都加密,会消耗相当多的资源,平摊到一台计算机上时,能够处理的请求数量必定也会随之减少

而且有的web网站访问量很大,都加密处理,服务器鸭梨山大。


所以,一般对于敏感信息的处理,比如用户个人信息,才利用 HTTPS 加密通信。对一些其他非敏感的信息,就用 HTTP 通信即可。


原因 2


钱。


上面提到的证书是要花钱从认证机构那购买的。所以,那些购买证书并不合算的服务以及一些个人网站,可能只会选择采用 HTTP 的通信方式。

相关文章
|
1月前
|
安全 算法 网络协议
解析:HTTPS通过SSL/TLS证书加密的原理与逻辑
HTTPS通过SSL/TLS证书加密,结合对称与非对称加密及数字证书验证实现安全通信。首先,服务器发送含公钥的数字证书,客户端验证其合法性后生成随机数并用公钥加密发送给服务器,双方据此生成相同的对称密钥。后续通信使用对称加密确保高效性和安全性。同时,数字证书验证服务器身份,防止中间人攻击;哈希算法和数字签名确保数据完整性,防止篡改。整个流程保障了身份认证、数据加密和完整性保护。
|
3月前
|
Ubuntu Linux Shell
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
(已成功解决)Linux环境报错—bash: wget: command not found;常见Linux发行版本,Linux中yum、rpm、apt-get、wget的区别;Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
1091 68
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
|
1月前
|
网络协议 安全 网络安全
Introduction to the HTTP and HTTPS Protocol
HTTP protocol is the foundation of the Internet, and HTTPS is the secure version of HTTP. HTTP is an application layer protocol based on TCP/IP protocol. It does not involve packet (packet) transmission, mainly specifying the communication format between the client and the server, and the default po
78 25
|
1月前
|
缓存 安全 网络安全
代理协议解析:如何根据需求选择HTTP、HTTPS或SOCKS5?
本文详细介绍了HTTP、HTTPS和SOCKS5三种代理协议的特点、优缺点以及适用场景。通过对比和分析,可以根据具体需求选择最合适的代理协议。希望本文能帮助您更好地理解和应用代理协议,提高网络应用的安全性和性能。
76 17
|
2月前
|
安全 搜索推荐 网络安全
HTTPS与HTTP:区别及安全性对比
HTTP和HTTPS是现代网络通信中的两种重要协议。HTTP为明文传输,简单但不安全;HTTPS基于HTTP并通过SSL/TLS加密,确保数据安全性和完整性,防止劫持和篡改。HTTPS还提供身份验证,保护用户隐私并防止中间人攻击。尽管HTTPS有额外的性能开销和配置成本,但在涉及敏感信息的场景中,如在线支付和用户登录,其安全性优势至关重要。搜索引擎也更青睐HTTPS网站,有助于提升SEO排名。综上,HTTPS已成为大多数网站的必然选择,以保障用户数据安全和合规性。
155 1
|
3月前
|
应用服务中间件 Linux 网络安全
nginx安装部署ssl证书,同时支持http与https方式访问
为了使HTTP服务支持HTTPS访问,需生成并安装SSL证书,并确保Nginx支持SSL模块。首先,在`/usr/local/nginx`目录下生成RSA密钥、证书申请文件及自签名证书。接着,确认Nginx已安装SSL模块,若未安装则重新编译Nginx加入该模块。最后,编辑`nginx.conf`配置文件,启用并配置HTTPS服务器部分,指定证书路径和监听端口(如20000),保存后重启Nginx完成部署。
1179 8
|
3月前
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
3月前
|
安全 算法 网络安全
HTTP和HTTPS的区别
本文介绍HTTP与HTTPS的区别、HTTPS链接建立过程及常见加密算法。HTTP为明文传输,易被窃听;HTTPS通过SSL/TLS协议加密,确保数据安全。HTTPS使用端口443,提供认证机制。文中还详细讲解了对称加密(如AES、DES)和非对称加密(如RSA、ECC)算法的特点及应用场景。
|
3月前
|
安全 网络安全 数据安全/隐私保护
第六问:http和https区别与联系
HTTP 和 HTTPS 是现代网络通信中的两种重要协议。HTTP 是明文传输协议,无加密功能;HTTPS 在 HTTP 基础上加入 SSL/TLS 加密层,提供数据加密、身份验证和数据完整性保障。HTTP 适用于非敏感信息传输,如新闻网站;HTTPS 适用于在线支付、账户登录等需要保护用户数据的场景。
99 0
|
Web App开发 存储 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
      前段时间公司hadoop集群宕机,发现是namenode磁盘满了, 清理出部分空间后,重启集群时,重启失败。 又发现集群Secondary namenode 服务也恰恰坏掉,导致所有的操作log持续写入edits.new 文件,等集群宕机的时候文件大小已经达到了丧心病狂的70G+..重启集群报错 加载edits文件失败。
961 0