HTTP升级HTTPS

为什么要使用HTTPS

一、HTTP or HTTPS

在 Web 发展的早期,HTTP(HyperText Transfer Protocol) 几乎支撑了整个互联网世界。它简单、高效、实现成本低,但随着互联网从“信息展示”走向“数据交互”,HTTP 的安全问题逐渐暴露,已经无法满足现代网络环境的需求。

1.HTTP明文传输的风险

HTTP 最大的问题在于:所有数据都是明文传输。这直接带来了以下安全风险:

  1. 窃听风险(信息被偷窥)

在 HTTP 通信过程中,请求内容、响应数据、Cookie、Token 等都会以明文形式在网络中传输。
只要攻击者位于同一网络环境(如公共 WiFi),就可以通过抓包工具轻松获取敏感信息。

例如:用户名、密码、登录态、接口返回数据等。

  1. 篡改风险(数据被中途修改)

HTTP 不具备数据完整性校验能力,攻击者可以在数据传输过程中对内容进行修改。

比如:

  • 注入恶意脚本(比如我记得我小时候打开一些网站,然后就会有一些运营商的广告,这就是运营商通过http来向网页注入脚本)

  • 替换下载资源

  • 篡改接口返回数据

用户和服务器都无法察觉数据已被篡改

  1. 伪装风险(身份被冒充)

HTTP 无法验证服务器的真实身份,攻击者可以伪装成合法网站进行“中间人攻击”。

用户访问的“看起来是官网”,实际上可能是一个钓鱼站点。


2.HTTPS 的诞生背景与核心价值

为了解决 HTTP 的安全缺陷,HTTPS(HTTP Secure)应运而生。

HTTPS 的核心价值只有一个:建立网络信任。

它通过引入加密、身份认证和完整性校验机制,让客户端与服务器之间的通信变得:

  • 安全
  • 可信
  • 不可篡改

在今天,如果想要上线一个网站,HTTPS 已不再是“加分项”,而是Web 的基本门槛

  • 浏览器默认对 HTTP 标记“不安全”
  • 搜索引擎对 HTTPS 站点有更好的排名
  • 现代 Web API(如地理定位、摄像头)强制要求 HTTPS

二、HTTPS 到底是什么?

1.HTTPS 定义与本质

从本质上讲:

HTTPS = HTTP + TLS/SSL 加密层

它并不是一种全新的协议,而是在 HTTP 与 TCP 之间,增加了一层安全传输协议

1
2
3
4
5
HTTP

TLS / SSL(加密、认证)

TCP

HTTP 负责:

  • 请求/响应格式
  • 状态码
  • Header / Body 规范

TLS/SSL 负责:

  • 数据加密
  • 身份认证
  • 数据完整性校验

2.HTTPS & SSL & TLS

这是很多初学者容易混淆的地方,我最开始也不知道这个有啥区别。

  • SSL(Secure Sockets Layer)
    • 最早的加密协议
    • 已被证明存在安全漏洞
    • 目前已被淘汰
  • TLS(Transport Layer Security)
    • SSL 的升级版本
    • 当前主流标准(TLS 1.2 / TLS 1.3)
    • 更安全、性能更好

我们口头常说的“SSL 证书”,本质上指的是 TLS 证书


3.HTTPS 的三大核心特征

1.加密传输

通过对称加密 + 非对称加密的组合,HTTPS 可以确保数据即使被截获,也无法被解密。

2.身份认证

服务器必须向客户端提供由 CA(证书颁发机构) 签发的数字证书,用于证明“我是谁”。

浏览器会自动校验证书合法性,防止访问到假网站。

3.数据完整性校验

HTTPS 使用消息摘要算法(如 HMAC)对数据进行校验,确保数据在传输过程中未被修改。


三、阿里云服务器升级 HTTPS

我以我的博客网站为例,升级 HTTPS 的流程通常如下:

1.申请 SSL 证书

阿里云提供免费的 DV 证书,适合个人博客和中小项目:

  1. 进入阿里云控制台

  2. 直接在顶部栏搜索 SSL 证书,然后进入 SSL 证书管理

    ssl证书-阿里云控制台

  3. 点击创建证书,申请免费证书

  4. 填写资料,绑定域名并完成 DNS 验证

    ssl证书-证书申请


2.下载并部署证书

点击下载按钮,然后选择对应的Web服务器类型,我这里使用的Nginx,如果使用其他服务器,可以点击帮助查看对应的指南。

ssl证书-下载证书

下载证书后,一般会得到:

  • xxx.pem(证书文件)
  • xxx.key(私钥文件)

将证书上传到服务器,例如:

1
/etc/nginx/ssl/

3.配置 Nginx 启用 HTTPS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 443 ssl;
server_name 你的域名;

ssl_certificate /etc/nginx/ssl/xxx.pem;
ssl_certificate_key /etc/nginx/ssl/xxx.key;

ssl_protocols TLSv1.2 TLSv1.3;

location / {
root /usr/share/nginx/html;
index index.html;
}
}

重启 Nginx:

1
nginx -s reload

4.HTTP 强制跳转 HTTPS

1
2
3
4
5
server {
listen 80;
server_name 你的域名;
return 301 https://$host$request_uri;
}

至此,我们的网站已经完成了从 HTTP 到 HTTPS 的升级。


四、总结

其实升级从 HTTP 到 HTTPS 并不是特别复杂,但是升级之后网站的安全度会大幅提升:

  • HTTP 解决的是“能不能通信”
  • HTTPS 解决的是“通信是否可信”

在当下的互联网环境中:

HTTPS 不是选择题,而是必选项。

无论你是个人博客、前端项目还是后端接口服务,只要涉及网络通信,在互联网上发布,HTTPS 都应该成为默认配置。