HTTP 超文本传输安全协议
字数 1706 2025-08-11 08:36:13
HTTP与HTTPS协议详解及HTTPS部署实战
一、HTTP协议基础
1. HTTP协议概述
HTTP(HyperText Transfer Protocol)是用于从万维网服务器传输超文本到本地浏览器的传送协议,基于TCP/IP通信协议传递数据(HTML文件、图片文件、查询结果等)。
2. HTTP工作原理
- 工作于客户端-服务端架构
- 浏览器作为HTTP客户端通过URL向HTTP服务端(WEB服务器)发送请求
- 常见Web服务器:Nginx、Apache、IIS等
- 默认端口号:80(可改为8080或其他端口)
3. HTTP核心特性
- 无连接:每次连接只处理一个请求,处理完成后即断开连接
- 媒体独立:任何类型数据都可以通过HTTP发送,只要客户端和服务器知道如何处理
- 无状态:协议对于事务处理没有记忆能力,后续处理需要前面信息时必须重传
4. HTTP消息结构
客户端请求消息包含:
- 请求行(request line)
- 请求头部(header)
- 空行
- 请求数据
服务器响应消息包含:
- 状态行
- 消息报头
- 空行
- 响应正文
5. HTTP请求方法
- HTTP/1.0定义:GET、POST、HEAD
- HTTP/1.1新增:OPTIONS、PUT、DELETE、TRACE、CONNECT
二、HTTPS协议详解
1. HTTPS基本概念
HTTPS(HyperText Transfer Protocol over Secure Socket Layer) = HTTP + SSL/TLS,在HTTP下加入SSL层,安全基础是SSL。
2. SSL/TLS协议
- SSL(Secure Sockets Layer 安全套接层)
- TLS(Transport Layer Security,SSL继任者)
- 为网络通信提供安全及数据完整性
SSL协议分层:
- SSL握手协议:身份认证、协商加密算法、交换加密密钥
- SSL记录协议:数据封装、压缩、加密
3. SSL服务功能
- 认证用户和服务器,确保数据发送到正确的客户机和服务器
- 加密数据防止中途被窃取
- 维护数据完整性,确保传输过程中不被改变
4. HTTP的安全风险
- 窃听风险:黑客可获知通信内容
- 篡改风险:黑客可修改通信内容
- 冒充风险:黑客可冒充他人身份参与通信
5. HTTPS解决方案
通过SSL证书实现:
- 所有信息加密传播
- 具有校验机制,一旦被篡改会立刻发现
- 配备身份证书,防止身份被冒充
证书验证流程:
- 浏览器读取证书信息进行校验
- 查找系统中受信任的证书发布机构CA
- 取出CA公钥对证书签名解密
- 计算证书hash值与签名对比
- 验证通过后使用证书中的公钥加密
6. HTTPS缺点
- SSL证书费用高,部署维护繁琐
- 降低用户访问速度(多次握手)
- HTTP跳转HTTPS增加访问耗时
- 安全算法消耗CPU资源
三、CA机构与证书管理
1. CA机构介绍
CA(Certificate Authority)证书颁发机构负责证书的颁发、管理及吊销。证书包含拥有者信息、公钥、有效期、CA信息等。
证书三大功能:
- 加密
- 签名
- 身份验证
2. 构建私有CA
环境准备
- 检查安装openssl
- 配置文件:/etc/pki/tls/openssl.cnf
创建CA服务器
- 创建所需文件:
touch index.txt echo 01 > serial - 生成CA私钥:
(umask 066; openssl genrsa -out private/cakey.pem 2048) - 生成自签名证书:
openssl req -new -x509 -key private/cakey.pem -days 7300 -out cacert.pem
客户端证书申请
- 生成私钥:
(umask 066; openssl genrsa -out /etc/pki/tls/private/www.qf.com.key 2048) - 生成证书请求(CSR):
openssl req -new -key /etc/pki/tls/private/www.qf.com.key -days 365 -out /etc/pki/tls/www.qf.com.csr - 将CSR发送给CA服务器
CA签署证书
openssl ca -in /etc/pki/CA/private/www.qf.com.csr -out /etc/pki/CA/certs/www.qf.com.crt -days 365
证书吊销
- 吊销证书:
openssl ca -revoke /etc/pki/CA/newcerts/01.pem - 生成吊销编号:
echo 01 > /etc/pki/CA/crlnumber - 更新证书吊销列表:
openssl ca -gencrl -out thisca.crl
四、Nginx HTTPS部署实战
1. 证书申请
- 在CA机构(如阿里云)申请证书
- 完成域名验证(文件验证或DNS验证)
- 下载证书文件(.key和.pem)
2. Nginx配置
server {
listen 443 ssl;
server_name www.testpm.cn;
ssl_certificate /etc/nginx/cert/2447549_www.testpm.cn.pem;
ssl_certificate_key /etc/nginx/cert/2447549_www.testpm.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
3. 配置完成后
- 测试配置:
nginx -t - 重新加载配置:
nginx -s reload
五、关键总结
- HTTP是明文传输,HTTPS通过SSL/TLS加密传输
- SSL证书是HTTPS安全的核心,验证身份并加密数据
- 可自建CA或从商业CA机构获取证书
- Nginx配置HTTPS需要指定证书和私钥路径
- HTTPS虽增加安全性,但也带来性能开销和管理复杂性