☰
HTTPS 详解
2026/10/4 2:58:37 网站建设 项目流程

这里写目录标题

    • 一、HTTPS 是什么
    • 二、HTTPS 核心原理
      • 1. 证书(SSL 证书)是什么
      • 2. 两种加密方式为什么都要用
      • 3. TLS 握手流程(浏览器 ↔ 你的服务器)
    • 三、腾讯云 SSL 证书申请与部署
      • 1. 前置准备
      • 2. 申请免费 SSL 证书(DV 证书)
      • 3. 下载证书
      • 4. 上传证书到服务器
      • 5. 配置 Nginx 启用 HTTPS
      • 6. 重启 Nginx 并验证
      • 7. 证书续期
    • 四、常见踩坑点

一、HTTPS 是什么

HTTPS =HTTP + SSL/TLS

  • HTTP:明文传输,浏览器和服务器之间的数据"裸奔",中间人可以窃听、篡改内容(比如支付链接、表单密码)。
  • SSL/TLS:一套加密协议,给 HTTP 套上一层加密通道。
  • HTTPS:加密版本的 HTTP,默认端口443;普通 HTTP 是80。

二、HTTPS 核心原理

整个过程分三块:证书身份校验+握手协商密钥+后续通信加密传输。

1. 证书(SSL 证书)是什么

SSL 证书是由 CA 机构颁发的一张"服务器身份证",里面包含:

  • 你的域名
  • 证书公钥
  • CA 机构签名
  • 有效期

重点:公钥加密,私钥解密

  • 公钥:放在证书里,公开给所有人。
  • 私钥:必须保存在你的腾讯云服务器上,绝对不能泄露!

2. 两种加密方式为什么都要用

加密方式特点在 HTTPS 里的角色
非对称加密(公钥/私钥)安全但慢只用来安全交换会话密钥
对称加密(同一把钥匙)快但密钥分发难用来加密后续所有数据

两者结合:先用非对称加密解决"密钥怎么安全传过去",再用对称加密解决"数据怎么快速加密传输"。各取所长。

3. TLS 握手流程(浏览器 ↔ 你的服务器)

  1. 浏览器访问网站,向服务器发起 HTTPS 请求,告诉服务器自己支持哪些加密套件(并生成随机数 A)。
  2. 服务器返回SSL 证书(里面带公钥,并生成随机数 B)。
  3. 浏览器校验证书:
    • 检查证书是不是可信 CA 签发、域名是否匹配、有没有过期、有没有被吊销。
    • ❌ 校验失败 → 浏览器直接弹出"不安全"警告。
  4. 浏览器生成一个随机会话密钥,用服务器的公钥加密后发给服务器。
  5. 服务器用自己的私钥解密,拿到这个随机会话密钥。
  6. ✅ 握手完成。之后双方所有数据,都用这个对称会话密钥加密通信。
浏览器 服务器 | --- 请求 + 随机数A ----------> | | <-- 证书(公钥) + 随机数B --------- | | 验证证书 ✓ | | --- 公钥加密 会话密钥 ----------> | 私钥解出 会话密钥 | | | ==== 用会话密钥对称加密通信 ====> | | <=== 用会话密钥对称加密通信 ====== |

三、腾讯云 SSL 证书申请与部署

光懂原理不够,实际项目里要落地。下面以腾讯云为例,从申请到部署到 Nginx,完整走一遍。

1. 前置准备

  • 一个已备案的域名(国内服务器必须备案)。
  • 一台腾讯云服务器(CVM / 轻量应用服务器)。
  • 域名已解析到服务器公网 IP。

2. 申请免费 SSL 证书(DV 证书)

腾讯云提供免费 DV 证书,有效期 1 年,个人项目足够用。

  1. 登录 腾讯云 SSL 证书控制台。
  2. 点击申请免费证书。
  3. 选择DV 免费证书(TrustAsia),填写:
    • 域名:example.com或www.example.com
    • 邮箱
  4. 域名验证:选择"DNS 验证",腾讯云会给你一条 CNAME 记录,添加到云解析里。
    • 也可以用"文件验证",往网站根目录放一个验证文件。
  5. 等待 CA 审核签发,通常几分钟到几小时。

3. 下载证书

签发完成后,在证书列表里点下载,选择对应服务器类型:

  • Nginx→ 得到一个压缩包,里面有:
    • xxx.crt/xxx.pem(证书文件,含公钥)
    • xxx.key(私钥文件)

⚠️.key私钥文件务必妥善保管,不要传到 GitHub、不要发到群里,泄露了等于钥匙丢了。

4. 上传证书到服务器

把.crt和.key上传到服务器,建议路径:

/etc/nginx/ssl/ ├── example.com.crt └── example.com.key

5. 配置 Nginx 启用 HTTPS

编辑 Nginx 配置(如/etc/nginx/conf.d/example.conf):

server { listen 443 ssl; server_name example.com www.example.com; # 证书路径 ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key; # 推荐的安全配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; location / { proxy_pass http://127.0.0.1:3000; # 你的后端服务 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } # HTTP 强制跳转 HTTPS server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; }

6. 重启 Nginx 并验证

nginx-t# 检查配置语法nginx-sreload# 平滑重启

浏览器访问https://example.com,地址栏出现 🔒 锁标志,说明 HTTPS 已生效。

7. 证书续期

  • 免费证书有效期 1 年,到期前 30 天控制台会提示,重新申请并替换.crt/.key即可。
  • 也可以用acme.sh/certbot配合 Let’s Encrypt 做自动续期,省心。

四、常见踩坑点

  1. 证书与域名不匹配:申请时填的域名要和 Nginxserver_name完全一致,否则浏览器报"证书域名不匹配"。
  2. 443 端口未放行:腾讯云安全组里要放行443入站,否则外部连不上。
  3. 私钥泄露:.key文件权限设为600(chmod 600 example.com.key),仅 root 可读。
  4. HTTP 没跳 HTTPS:用户直接输example.com默认走 80,要么配 80→443 跳转,要么用 HSTS。
  5. 混合内容:页面里如果还有http://的图片/JS,浏览器会报"混合内容"警告,要全部改成https://或相对协议//。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询