HTTP(超文本传输协议)是目前互联网应用最广泛的协议,伴随着人们网络安全意识的加强,HTTPS 被越来越多地采纳。不论是访问一些购物网站,或是登录一些博客、论坛等,我们都被 HTTPS 保护着,甚至 Google Chrome、Firefox 等主流浏览器已经将所有基于 HTTP 的站点都标记为不安全。

为什么 HTTPS 比 HTTP 安全?在回答这个问题之前,首先我们得了解 HTTP 和 HTTPS 是什么。

# HTTP 和 HTTPS 的访问过程

从互联网发展至今,HTTP 一直担任互联网传输信息的标准协议。传输的信息可以是互联网内计算机之间的文档,文件,图像,视频等。
![](https://upload-images.jianshu.io/upload_images/80097-888f137a7ceb84b8.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

HTTP 请求过程中,客户端与服务器之间没有任何身份确认的过程,数据全部明文传输,“裸奔”在互联网上,所以很容易遭到黑客的攻击。

![](https://upload-images.jianshu.io/upload_images/80097-422107b6b9574621.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
从上图中可以看到,客户端发出的请求很容易被黑客截获,如果此时黑客冒充服务器,则其可返回任意信息给客户端,而不被客户端察觉,所以我们经常会听到一词“劫持”。

而 HTTPS 实际上是带有 SSL 的 HTTP(HTTP + SSL=HTTPS)。当您在浏览器的地址栏中看到 HTTPS 时,这就意味着与该网站的所有通信都将被加密,整个访问过程更加安全。

![](https://upload-images.jianshu.io/upload_images/80097-6d664727d9288d9d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

# 为什么 HTTPS 比 HTTP 安全

HTTPS 的安全性往往体现在三个方面:
- 服务器身份验证,通过服务器身份验证,用户可以明确当前它正在与对应的服务器进行通信。

- 数据机密性,其他方无法理解发送的数据内容,因为提交的数据是加密的。

- 数据完整性,传输会携带 Message Authentication Code(MAC)用于验证,因此传输的数据不会被另一方更改。
可以举个例子来比较下。一个 HTTP 请求,其组成则是多个遵循 HTTP 协议的文本行,例如下面的 GET 请求:

**GET /helloupyun.txt HTTP/1.1**

**User-Agent: curl/7.73.0 libcurl/7.73.0 OpenSSL/1.1.l zlib/1.2.11**

**Host: www.upyun.com**

**Accept-Language: en**

请求会以明文的形式直接发送,既然是明文的形式,对于协议命令和语法有基本了解的人,只要监控了请求发送的过程,就能获取并读懂请求的意义。因此用 HTTP 的方式发送密码一类的数据时,安全性极低。

相对的,HTTPS 使用了 SSL(或 TLS)来加密 HTTP 请求和响应,因此在上面的示例中,监控请求的人将会看到一串随机的数字,而不是可读性的文本。

**GsERHg9YDMpYk0VVDiRvw1H5miNieJeJ/FNUjgH0BmVAWII6+T4MnDwmCMZUI/orxP3HGwYCSIvyzS3MpmmSe4iaWKCOHH==**

其中加密过程采用的 SSL(安全套接字层)这一标准的安全技术,涵盖了非对称密钥和对称密钥。

**对称加密**
对称加密是指加密与解密使用同一个密钥的加密算法。

目前常见的加密算法有:DES、AES、IDEA 等

**非对称加密**
非对称加密使用的是两个密钥,公钥与私钥,我们会使用公钥对网站账号密码等数据进行加密,再用私钥对数据进行解密。这个公钥会发给查看网站的所有人,而私钥是只有网站服务器自己拥有的。

目前常见非对称加密算法:RSA,DSA,DH 等。

而常用的套件,例如 ChaCha20-Poly1305 加密套件就使用了这两种算法,其中 Chacha20 是指对称加密算法,而Poly1305 是指身份认证算法。

参考 RFC 文档,我们可以了解 ChaCha20 提供了 256 位的加密强度,这作为对称加密算法来保障 HTTPS 安全性是足够了。
![](https://upload-images.jianshu.io/upload_images/80097-0932b8e451b8af1c.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
而 Poly1305 作为身份认证算法提供身份验证,可以防止攻击者在 TLS 握手过程中,将虚假信息插入到安全的数据流中,Poly1305 算法提供了大约 100 位的安全性加密强度,足以阻止这类攻击。

总的来看,HTTPS 相比 HTTP ,它作为一种加密手段不仅加密了数据,还给了网站一张安全可信赖的身份证。

# 聊聊 HTTPS 的一些优缺点

整体来看 HTTPS 有以下五个优点:
- 最大限度地提高 Web 上数据和事务的安全性;

- 加密用户敏感或者机密信息;

- 提高搜索引擎中的排名

- 避免在浏览器中出现“不安全”的提示;

- 提升用户对网站的信赖。

相对的,缺点也是必不可少的:

- HTTPS 协议在握手阶段耗时相对较大,会影响页面整体加载速度;

- 在浏览器和服务器上会更多的 CPU 周期来加密/解密数据;

- SSL 证书一般都需要支付一定费用来获取,并且费用往往不低;

- 并不是绝对意义上的安全,在网站遭受攻击,服务器被劫持时,HTTPS 基本起不到任何安全防护作用。

#将 HTTP 升级成 HTTPS

如何将网站从 HTTP 升级成 HTTPS 呢?相比起常规的升级步骤,又拍云提供一套更为简洁明了的流程,从 SSL 证书的申购、管理到部署,三步即可完成。同时,又拍云与国际顶级 CA 机构合作,证书类型丰富,操作流程简单方便。

### 推荐阅读
[夜空中最靓的二狗子是如何让 HTTPS 快上加快的?](https://www.upyun.com/tech/article/456/1.html)

[从 HTTP/1 到 HTTP/2,以及即将到来的 HTTP/3](https://www.upyun.com/tech/article/465/1.html)

为什么 HTTPS 比 HTTP 安全的更多相关文章

  1. 【流量劫持】躲避 HSTS 的 HTTPS 劫持

    前言 HSTS 的出现,对 HTTPS 劫持带来莫大的挑战. 不过,HSTS 也不是万能的,它只能解决 SSLStrip 这类劫持方式.但仔细想想,SSLStrip 这种算劫持吗? 劫持 vs 钓鱼 ...

  2. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  3. 7.让网站支持http和https的访问方式

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#iis 怎么让网站在本地支持SSL?http://www.c ...

  4. HTTPS简介

    一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...

  5. 猖獗的假新闻:2017年1月1日起iOS的APP必须使用HTTPS

    一.假新闻如此猖獗 刚才一位老同事 打电话问:我们公司还是用的HTTP,马上就到2017年了,提交AppStore会被拒绝,怎么办? 公司里已经有很多人问过这个问题,回答一下: HTTP还是可以正常提 ...

  6. WebAPi之SelfHost自创建证书启动Https疑难解惑及无法正确返回结果

    前言 话说又来需求了,之前对于在SelfHost中需要嵌套页面并操作为非正常需求,这回来正常需求了,客户端现在加了https,老大过来说WebAPi访问不了了,这是什么情况,我去试了试,还真是这个情况 ...

  7. 苹果强制使用HTTPS传输了怎么办?——关于HTTPS,APP开发者必须知道的事

    WeTest 导读 2017年1月1日起,苹果公司将强制使用HTTPS协议传输.本文通过对HTTPS基础原理和通信过程内容的讲解,介绍APP开发者在这个背景下的应对办法. 几周前,我们在<htt ...

  8. 【原创】免费申请SSL证书【用于HTTPS,即是把网站从HTTP改为HTTPS,加密传输数据,保护敏感数据】

    今天公司有个网站需要改用https访问,所以就用到SSL证书.由于沃通(以前我是在这里申请的)暂停了免费的SSL证书之后,其网站推荐了新的一个网站来申请证书,所以,今天因为刚好又要申请一个证书,所以, ...

  9. https 安全验证问题

    最近为了满足苹果的 https 要求, 经过努力终于写出了方法 验证 SSL 证书是否满足 ATS 要求 nscurl --ats-diagnostics --verbose https://你的域名 ...

  10. Ubuntu下配置apache开启https

    一.HTTPS简述随着网络的日常,信息安全越来越重要,传统的网站都是http协议明文传输,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输.身份认证的网络协议,比http协议安全. 那ht ...

随机推荐

  1. vue事件获取当前对象

    一.事件传参 如点击事件 <div @click='click'> <div> <div @click='click_1('msg')'> <div> ...

  2. 拿起键盘就是干:跟我一起徒手开发一套分布式IM系统

    1.引言 老读者应该还记得我在去年国庆节前分享过一篇<技术干货:从零开始,教你设计一个百万级的消息推送系统>,虽然我在文中有贴一些伪代码,依然有些朋友希望能直接分享一些可以运行的源码.好吧 ...

  3. Eclipse 创建 Maven 项目

    本人也是新手小白,在创建 Maven 项目的时候几乎踩完了所有的坑.特此总结如下: 1.咱先选中 File -> New -> Maven Project 2.然后如下图    在这里说明 ...

  4. linux下mqtt-client

    CPATH += ../embe_mqtt/MQTTClient/srcPSRTPATH = ../embe_mqtt/MQTTPacket/src LOADPATH += -I$(CPATH)LOA ...

  5. C++ Web框架::cintara

    1.Cinatra是由C++开源社区purecpp发起的一个开源项目,是一个现代C++写的Web框架,旨在给用户提供一个易用.灵活和高性能的Web框架,让用户能完全专注于核心逻辑而无需关注http细节 ...

  6. 微信小程序文件压缩上传

    试用场景:上传图片过大,需进行压缩处理. 涉及微信API API 说明 文档 chooseImage 选择图片 https://developers.weixin.qq.com/miniprogram ...

  7. spring boot配置Servlet容器

    Spring boot 默认使用Tomcat作为嵌入式Servlet容器,只需要引入spring-boot-start-web依赖,默认采用的Tomcat作为容器 01  定制和修改Servlet容器 ...

  8. JVM(3) 垃圾收集器与内存分配策略

    一.垃圾收集的概念 在Java虚拟机运行时数据区中程序计数器.虚拟机栈和本地方法栈3个区域随线程而生,随线程而灭:栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作,每一个栈帧中分配多少内 ...

  9. 设计模式(十七)Observer模式

    在Observer模式中,当观察对象的状态发生变化时,会通知给观察者.Observer模式适用于根据对象状态进行相应处理的场景. 首先看一下示例程序的视图. 然后用实际代码来理解这种设计模式. pac ...

  10. 向现有URL末尾添加查询字符串参数

    向现有URL末尾添加查询字符串参数 xhr.open("get", "example.php?name1=value1&name2=value2", t ...