网站是怎么实现https的?(全攻略)

6 阅读4分钟

网站 HTTPS 实现全攻略(从零到部署,原理 + 步骤 + 配置 + 常见坑)

一、先搞懂:HTTP 和 HTTPS 本质区别

  • HTTP:明文传输,端口80,数据裸奔,中间人可以窃听、篡改、劫持
  • HTTPS = HTTP + SSL/TLS 加密,端口443,传输加密 + 身份认证 + 数据完整性校验。

核心三大作用:

  1. 加密传输:别人截获报文也看不懂;
  2. 身份认证:确认你访问的是真实官网,不是钓鱼站;
  3. 完整性:数据中途被篡改能立刻发现。

二、HTTPS 底层原理(极简大白话)

1. 用到两套加密

  1. 非对称加密(RSA/ECC) :用来协商会话密钥、验证证书身份
  2. 对称加密(AES) :协商好密钥后,实际网页数据高速加密传输

2. 完整握手流程

  1. 浏览器访问网站 443 端口;
  2. 服务器把SSL 证书发给浏览器;
  3. 浏览器用CA 根证书校验网站证书是否合法、没过期、域名匹配;
  4. 校验通过后,双方用非对称加密协商出一个临时会话密钥
  5. 后续所有网页流量,都用对称密钥 AES 加密通信
  6. 建立加密通道,开始传输网页内容。

关键点:SSL 证书是 HTTPS 的门票,没有证书就开不了 HTTPS

三、必备核心:SSL/TLS 证书是什么

1. 证书包含内容

  • 网站域名(主域名 + 泛域名)
  • 企业 / 个人信息
  • 加密算法、有效期
  • CA 机构数字签名

2. 证书类型(按域名覆盖)

  1. 单域名证书:只保护 www.xxx.com
  2. 多域名证书:保护多个不同域名
  3. 泛域名证书*.xxx.com 适配所有子域名
  4. EV 企业级证书:地址栏显示企业名,信任度最高

3. 证书收费类型

  • 免费证书:Let's Encrypt、ZeroSSL、阿里云免费证书(适合个人 / 中小企业)
  • 付费证书:Symantec、GeoTrust、国产 CA(稳定性高、售后好、浏览器兼容性更强)

四、网站开启 HTTPS 完整 5 大步骤

步骤 1:准备域名 + 服务器

  • 已有域名、云服务器 / 虚拟主机 / 宝塔面板
  • 域名已备案(国内服务器必须备案才能用 443)

步骤 2:申请 SSL 证书

两种方式:

  1. 服务商一键申请阿里云 / 腾讯云 / 华为云 → SSL 证书 → 申请免费 DV 证书 → 填写域名 → 自动 DNS 验证下发证书。
  2. 自行申请 Let's EncryptCertbot 工具自动申请、自动续期。

证书下载格式一般有:

  • Nginx:pem + key
  • Apache:crt + key
  • IIS:PFX 格式

步骤 3:服务器配置证书(最常用 Nginx / 宝塔)

方式 A:宝塔面板(小白首选)
  1. 宝塔网站列表 → 对应站点 → SSL
  2. 上传证书文件 或 一键申请免费证书
  3. 开启强制 HTTPS(80 跳转 443)
  4. 保存生效,直接搞定
方式 B:原生 Nginx 手动配置

修改 nginx.conf 站点配置:

nginx

# 监听443端口
listen 443 ssl;
server_name www.gentaipower.com;

# 配置证书路径
ssl_certificate  /usr/local/nginx/ssl/xxx.pem;
ssl_certificate_key /usr/local/nginx/ssl/xxx.key;

# 加密协议与套件
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!SHA1:!SSLv3;
ssl_prefer_server_ciphers on;

# 网页根目录
root /www/xxx;
index index.html index.php;

配置完重启 Nginx:

bash

运行

systemctl restart nginx

步骤 4:设置 HTTP 自动跳转 HTTPS

访问 http 自动跳到 https,Nginx 加一段:

nginx

server {
    listen 80;
    server_name www.gentaipower.com;
    return 301 https://$host$request_uri;
}

步骤 5:浏览器校验 + 全站适配

  1. 浏览器打开域名,地址栏出现小锁 = 成功
  2. 检查:网页内所有图片、JS、CSS不能是 http 外链,否则出现混合内容,小锁变感叹号
  3. 站内全部改成相对路径或 https 资源

五、关键知识点:TLS 版本、算法选择

  1. 废弃:TLSv1.0、TLSv1.1(不安全,浏览器已拦截)
  2. 推荐:TLSv1.2 + TLSv1.3
  3. 加密算法优先:ECC 优于 RSA,速度快、安全性高、证书体积小

六、证书续期问题(重点)

  • 免费证书大多有效期 90 天,必须定期续期

  • 解决方案:

    1. 宝塔 / 云控制台自动续期
    2. Certbot 设置定时任务,自动续期 + 重启服务

七、常见报错与坑

  1. 小锁不安全、感叹号原因:页面有 http 图片 / 脚本(混合内容)
  2. 证书域名不匹配证书绑定域名和访问域名不一致
  3. 证书已过期没及时续期,浏览器直接拦截
  4. 443 端口没放行服务器防火墙 / 安全组没开 443,HTTPS 打不开
  5. 备案问题国内服务器未备案,443 端口无法使用