什么是 HTTPS?
HTTPS(Hypertext Transfer Protocol Secure,超文本传输协议安全)是 HTTP 的安全版本,HTTP 用于浏览器与服务器之间的通信。HTTPS 使用 TLS(Transport Layer Security,传输层安全)加密客户端与服务器之间传输的全部数据,防止敏感信息被窃听或篡改。浏览器中的挂锁图标表示已启用 HTTPS。如今 HTTPS 已成为所有网站的标准,而不只是处理金融交易的网站。HTTPS 如何工作
TLS 握手
1. Client Hello:浏览器发起连接,并列出支持的密码套件
2. Server Hello:服务器选择密码套件并发送证书
3. 证书验证:浏览器验证证书链
4. 密钥交换:通过非对称加密建立会话密钥
5. 安全信道:开始使用对称加密传输数据
加密过程
HTTP Request (unencrypted):
GET /login HTTP/1.1
Cookie: session=abc123
HTTPS Request (encrypted):
[Binary encrypted data - unreadable to interceptors]
HTTPS 的优势
| 优势 | 说明 |
|---|---|
| 数据加密 | 防止传输数据被窃听 |
| 数据完整性 | 检测传输过程中的篡改 |
| 身份认证 | 通过证书验证网站身份 |
| SEO 优势 | Google 在排名中优先考虑 HTTPS 网站 |
| 用户信任 | 挂锁图标向访客传达安全性 |
| 合规性 | PCI-DSS、GDPR 等法规要求使用 |
SSL/TLS 证书类型
域名验证(DV)
- 仅验证域名所有权
- 数分钟内即可签发
- 成本最低(Let's Encrypt 通常免费提供)
- 提供基础加密
组织验证(OV)
- 验证组织身份
- 签发需要 1-3 天
- 证书中显示组织名称
- 信任级别中等
扩展验证(EV)
- 严格验证组织信息
- 签发需要 1-2 周
- 信任标识级别最高(历史上曾显示绿色地址栏)
- 成本最高
实施 HTTPS
获取证书
1. 生成证书签名请求(CSR)
2. 向证书颁发机构(CA)提交 CSR
3. 完成域名或组织验证
4. 接收并安装证书
配置服务器
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:...;
}
HTTP 重定向到 HTTPS
server {
listen 80;
server_name example.com;
return 301 https://example.com$request_uri;
}
HTTPS 最佳实践
1. 使用 TLS 1.2 或更高版本:禁用旧协议(SSL 3.0、TLS 1.0/1.1)
2. 实施 HSTS:通过 HTTP Strict Transport Security 标头强制使用 HTTPS
3. 使用强密码套件:优先选择 ECDHE 和 AES-GCM 套件
4. 启用 OCSP stapling:加快证书验证
5. 提前续期证书:避免证书到期导致中断
6. 更新混合内容:确保所有资源都通过 HTTPS 加载
7. 监控证书到期时间:使用自动化监控工具
常见 HTTPS 问题
- 混合内容警告:HTTPS 页面加载了 HTTP 资源
- 证书不匹配:证书与域名不一致
- 证书过期:超出证书有效期
- 证书链问题:缺少中间证书
- 协议错误:客户端与服务器协议不匹配
无论内容类型如何,HTTPS 都不再是可选项,而是每个网站的基础要求。它同时提供安全、信任和 SEO 方面的优势。