什么是 HTTPS?
HTTPS(安全超文本传输协议)是 HTTP 的安全版本,使用 TLS(传输层安全)加密浏览器与服务器之间的所有通信。它保护数据完整性、机密性,并验证服务器身份。
快速了解
| 全称 | 安全超文本传输协议 |
|---|---|
| 创建时间 | 1994 年由 Netscape 开发 |
| 规范文档 | 官方规范 |
HTTPS 工作原理
HTTPS 由 Netscape 于 1994 年为其 Navigator 浏览器开发。它将 HTTP 封装在 TLS 加密中,防止窃听、篡改和中间人攻击。HTTPS 使用由证书颁发机构(CA)签发的数字证书来验证服务器身份。现代浏览器将 HTTP 网站标记为「不安全」,并要求 HTTPS 才能使用地理位置、Service Worker 和 HTTP/2 等功能。Let's Encrypt 使免费 TLS 证书广泛可用,加速了 HTTPS 的普及。HTTPS 通常使用端口 443,而不是 HTTP 的端口 80。
主要特点
- 使用 TLS 加密所有传输中的数据
- 通过证书验证服务器身份
- 防止窃听和篡改
- 默认使用端口 443
- 现代 Web 功能所必需
- 浏览器中的视觉指示器(锁图标)
常见用途
- 安全的网站通信
- 网上银行和电子商务
- 登录和身份验证页面
- API 安全
- 任何处理敏感数据的网站
示例
HTTPS URL:
https://www.example.com/secure-page
TLS 握手过程:
1. 客户端问候(支持的密码套件)
2. 服务器问候(选择的密码、证书)
3. 客户端验证证书
4. 密钥交换(建立会话密钥)
5. 开始加密通信
证书信息:
颁发者: Let's Encrypt Authority X3
主题: www.example.com
有效期从: 2024-01-01
有效期至: 2024-04-01
公钥: RSA 2048 位
HTTPS 头:
Strict-Transport-Security: max-age=31536000
Content-Security-Policy: upgrade-insecure-requests
将 HTTP 重定向到 HTTPS:
server {
listen 80;
return 301 https://$host$request_uri;
}