ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

HTTPS 详解

HTTPS 详解 这里写目录标题一、HTTPS 是什么二、HTTPS 核心原理1. 证书SSL 证书是什么2. 两种加密方式为什么都要用3. TLS 握手流程浏览器 ↔ 你的服务器三、腾讯云 SSL 证书申请与部署1. 前置准备2. 申请免费 SSL 证书DV 证书3. 下载证书4. 上传证书到服务器5. 配置 Nginx 启用 HTTPS6. 重启 Nginx 并验证7. 证书续期四、常见踩坑点一、HTTPS 是什么HTTPS HTTP SSL/TLSHTTP明文传输浏览器和服务器之间的数据裸奔中间人可以窃听、篡改内容比如支付链接、表单密码。SSL/TLS一套加密协议给 HTTP 套上一层加密通道。HTTPS加密版本的 HTTP默认端口443普通 HTTP 是80。二、HTTPS 核心原理整个过程分三块证书身份校验握手协商密钥后续通信加密传输。1. 证书SSL 证书是什么SSL 证书是由 CA 机构颁发的一张服务器身份证里面包含你的域名证书公钥CA 机构签名有效期重点公钥加密私钥解密公钥放在证书里公开给所有人。私钥必须保存在你的腾讯云服务器上绝对不能泄露2. 两种加密方式为什么都要用加密方式特点在 HTTPS 里的角色非对称加密公钥/私钥安全但慢只用来安全交换会话密钥对称加密同一把钥匙快但密钥分发难用来加密后续所有数据两者结合先用非对称加密解决密钥怎么安全传过去再用对称加密解决数据怎么快速加密传输。各取所长。3. TLS 握手流程浏览器 ↔ 你的服务器浏览器访问网站向服务器发起 HTTPS 请求告诉服务器自己支持哪些加密套件并生成随机数 A。服务器返回SSL 证书里面带公钥并生成随机数 B。浏览器校验证书检查证书是不是可信 CA 签发、域名是否匹配、有没有过期、有没有被吊销。❌ 校验失败 → 浏览器直接弹出不安全警告。浏览器生成一个随机会话密钥用服务器的公钥加密后发给服务器。服务器用自己的私钥解密拿到这个随机会话密钥。✅ 握手完成。之后双方所有数据都用这个对称会话密钥加密通信。浏览器 服务器 | --- 请求 随机数A ---------- | | -- 证书(公钥) 随机数B --------- | | 验证证书 ✓ | | --- 公钥加密 会话密钥 ---------- | 私钥解出 会话密钥 | | | 用会话密钥对称加密通信 | | 用会话密钥对称加密通信 |三、腾讯云 SSL 证书申请与部署光懂原理不够实际项目里要落地。下面以腾讯云为例从申请到部署到 Nginx完整走一遍。1. 前置准备一个已备案的域名国内服务器必须备案。一台腾讯云服务器CVM / 轻量应用服务器。域名已解析到服务器公网 IP。2. 申请免费 SSL 证书DV 证书腾讯云提供免费 DV 证书有效期 1 年个人项目足够用。登录 腾讯云 SSL 证书控制台。点击申请免费证书。选择DV 免费证书TrustAsia填写域名example.com或www.example.com邮箱域名验证选择DNS 验证腾讯云会给你一条 CNAME 记录添加到云解析里。也可以用文件验证往网站根目录放一个验证文件。等待 CA 审核签发通常几分钟到几小时。3. 下载证书签发完成后在证书列表里点下载选择对应服务器类型Nginx→ 得到一个压缩包里面有xxx.crt/xxx.pem证书文件含公钥xxx.key私钥文件⚠️.key私钥文件务必妥善保管不要传到 GitHub、不要发到群里泄露了等于钥匙丢了。4. 上传证书到服务器把.crt和.key上传到服务器建议路径/etc/nginx/ssl/ ├── example.com.crt └── example.com.key5. 配置 Nginx 启用 HTTPS编辑 Nginx 配置如/etc/nginx/conf.d/example.confserver { 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 做自动续期省心。四、常见踩坑点证书与域名不匹配申请时填的域名要和 Nginxserver_name完全一致否则浏览器报证书域名不匹配。443 端口未放行腾讯云安全组里要放行443入站否则外部连不上。私钥泄露.key文件权限设为600chmod 600 example.com.key仅 root 可读。HTTP 没跳 HTTPS用户直接输example.com默认走 80要么配 80→443 跳转要么用 HSTS。混合内容页面里如果还有http://的图片/JS浏览器会报混合内容警告要全部改成https://或相对协议//。
返回列表