HTTPS(Hypertext Transfer Protocol Secure)是 HTTP 的安全版本,用于在计算机网络上安全传输数据。它在 HTTP 协议的基础上增加了 SSL/TLS 加密层,确保数据在传输过程中不被窃取或篡改。
http://
开头。https://
开头,浏览器通常会显示锁形图标。对称加密是一种加密方法,使用相同的密钥进行数据的加密和解密。这种加密方式的特点是加密和解密速度快,适合处理大量数据。以下是关于对称加密的详细介绍:
对称加密在安全性要求较高的场景中通常与非对称加密结合使用,以解决密钥分发的问题。
非对称加密(Asymmetric Encryption)是一种使用一对密钥(公钥和私钥)进行加密和解密的加密技术。与对称加密不同,非对称加密的公钥和私钥在数学上是相关的,但不能通过其中一个推导出另一个。
哈希算法(Hash Algorithm)是一种将任意长度的输入(也称为预映射,pre-image)通过散列函数变换成固定长度的输出(通常是较短的字符串或数字)的算法。输出的结果称为哈希值(Hash Value)或哈希码(Hash Code)。
数字证书(Digital Certificate)是一种用于验证公钥所有者的电子文档,由受信任的第三方机构(称为证书颁发机构,CA)签发。它包含以下关键信息:
数字证书通常遵循X.509标准格式,广泛应用于HTTPS、电子邮件加密、代码签名等场景。它的核心作用是解决公钥分发中的信任问题,确保公钥确实属于声称的持有者。
定义
证书颁发机构(Certificate Authority,简称CA)是负责颁发和管理数字证书的可信第三方实体。数字证书用于验证公钥的所有者身份,确保通信双方的身份真实性和数据完整性。
主要功能
信任链机制
常见CA举例
安全性要求
SSL/TLS证书
代码签名证书
客户端证书
版本号
序列号
签名算法
颁发者
有效期
主体
主体公钥信息
扩展字段
CA的数字签名
TLS(Transport Layer Security)握手是客户端和服务器之间建立安全连接的过程。以下是 TLS 握手的主要步骤:
Client Hello
Client Hello
消息,包含以下信息:
Server Hello
Server Hello
消息,包含以下信息:
Server Certificate
Server Key Exchange(可选)
Server Hello Done
Client Key Exchange
Change Cipher Spec
Change Cipher Spec
消息,表示后续通信将使用协商的加密参数。Finished
Finished
消息,包含所有握手消息的哈希值,用于验证握手完整性。Server Change Cipher Spec
Change Cipher Spec
消息,表示切换到加密通信。Server Finished
Finished
消息,验证握手完整性。Application Data
Client Random
、Server Random
和 Pre-Master Secret
生成主密钥(Master Secret)。Change Cipher Spec
)。TLS 记录层协议(Record Layer Protocol)是 TLS/SSL 协议栈中的底层协议,负责数据的封装、加密和传输。它位于传输层(如 TCP)之上,为上层协议(如握手协议、警报协议、应用数据协议等)提供安全的数据传输服务。
每个 TLS 记录由以下字段组成:
0x16
:握手协议(Handshake Protocol)0x17
:应用数据协议(Application Data Protocol)0x15
:警报协议(Alert Protocol)0x0303
表示 TLS 1.2)。(注:所有版本号均指IETF发布的正式标准版本)
数据完整性保护是指在数据传输或存储过程中,确保数据没有被未授权的篡改、删除或插入。它是HTTPS协议中的一个重要安全特性,主要通过以下机制实现:
哈希函数
使用哈希算法(如SHA-256)对数据进行摘要计算,生成固定长度的哈希值。接收方可以通过重新计算哈希值来验证数据是否被篡改。
消息认证码(MAC)
结合密钥和哈希函数(如HMAC),生成一个认证标签。只有拥有相同密钥的通信双方才能验证数据的完整性。
数字签名
使用非对称加密(如RSA或ECDSA)对哈希值进行签名。接收方可以用公钥验证签名,确保数据来源可信且未被篡改。
在HTTPS中,数据完整性保护通常由TLS/SSL协议实现,确保客户端与服务器之间的通信内容在传输过程中不被篡改。
身份验证(Authentication)是HTTPS协议中确保通信双方身份真实性的重要机制。主要涉及以下方面:
作用
用于确认客户端/服务器是否为声称的实体,防止中间人攻击(如钓鱼网站冒充银行)。
实现方式
关键字段
Subject
:证书持有者的标识(如域名)。Issuer
:签发证书的CA名称。Validity Period
:证书的有效期。浏览器行为
若证书无效(如过期、域名不匹配、CA不受信任),浏览器会显示警告页面。
双向验证(可选)
某些场景(如企业内网)可能要求客户端也提供证书,实现双向身份确认。
中间人攻击(Man-in-the-Middle Attack, MITM) 是指攻击者在通信双方之间拦截或篡改数据,而通信双方对此毫不知情。在 HTTPS 协议中,防止中间人攻击是核心安全目标之一。
HTTPS 通过 数字证书、公钥加密、TLS 握手、数据完整性校验和 HSTS 等多种机制,有效防止中间人攻击,确保通信的机密性和完整性。
服务器端配置是指在服务器上设置和部署HTTPS协议所需的各种参数和文件。主要包括以下几个方面:
证书安装
.crt
或.pem
文件).key
文件)Web服务器配置
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
}
强制HTTPS(HTTP到HTTPS重定向)
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
启用HSTS(HTTP Strict Transport Security)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
证书续订与自动化
certbot renew --nginx
加密套件与协议版本
OCSP Stapling配置
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8;
服务器性能优化
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
在HTTPS协议中,客户端配置指的是在使用HTTPS进行通信时,客户端(如浏览器、移动应用或其他HTTP客户端)需要进行的一系列设置和调整,以确保能够正确、安全地与服务器建立HTTPS连接。以下是客户端配置的关键方面:
证书信任配置
协议版本支持
密码套件配置
代理设置
超时与重试机制
证书吊销检查
客户端证书(双向认证)
SNI支持
HSTS配置
调试与日志
--tlsv1.2
)。客户端配置的细节取决于具体实现,但核心目标是确保安全、兼容的HTTPS连接。
攻击者在客户端和服务器之间拦截通信,可以窃听或篡改数据。HTTPS 通过 TLS/SSL 加密防止这种攻击。
攻击者强制客户端和服务器使用较弱的加密协议(如 SSL 2.0/3.0),使其更容易被破解。现代 HTTPS 实现会拒绝不安全的协议版本。
攻击者使用伪造或无效的证书冒充合法网站。浏览器会验证证书的颁发机构(CA)和有效期来防范。
针对 TLS 1.0 的漏洞,利用 CBC 加密模式的弱点解密数据。解决方案是升级到 TLS 1.2+ 或使用 RC4 加密(现已不推荐)。
通过压缩数据中的已知文本来恢复加密信息。应对方法是禁用 TLS 压缩功能。
OpenSSL 的漏洞,允许读取服务器内存中的敏感数据。需及时更新 OpenSSL 版本修复。
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
Strict-Transport-Security
,强制浏览器仅通过HTTPS访问。Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
max-age
:有效期(秒)。includeSubDomains
:覆盖所有子域名。preload
:提交到浏览器预加载列表。ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 valid=300s;
Secure
和HttpOnly
属性,防止通过非HTTPS传输或JavaScript窃取。Set-Cookie: sessionID=123; Secure; HttpOnly; SameSite=Lax
通过以上措施,可显著提升HTTPS协议的安全性与可靠性。
HTTPS(Hypertext Transfer Protocol Secure)是 HTTP 的安全版本,通过加密和身份验证机制保护数据传输的安全性。它基于 HTTP 协议,但使用 SSL/TLS 协议对通信进行加密,确保数据在传输过程中不被窃取或篡改。
加密传输
HTTPS 使用对称加密和非对称加密结合的方式(如 AES、RSA)对数据进行加密,防止中间人攻击(Man-in-the-Middle, MITM)窃听数据。
身份验证
通过数字证书(由受信任的证书颁发机构 CA 签发)验证服务器身份,确保用户访问的是真实的网站而非仿冒站点。
数据完整性
使用消息认证码(如 HMAC)或数字签名,确保数据在传输过程中未被篡改。
SSL/TLS 握手
加密通信
握手完成后,双方使用会话密钥加密 HTTP 请求和响应数据。
特性 | HTTP | HTTPS |
---|---|---|
默认端口 | 80 | 443 |
安全性 | 明文传输,无加密 | 加密传输,防窃听和篡改 |
性能 | 无加密开销,速度较快 | 因加密/解密略有延迟 |
证书 | 不需要 | 需 CA 签发的 SSL/TLS 证书 |
注意:现代浏览器会对非 HTTPS 网站标记为“不安全”,推动全站 HTTPS 成为行业标准。
HTTPS(HyperText Transfer Protocol Secure)是 HTTP 的安全版本,通过加密和身份验证机制保护数据传输的安全性。在移动应用中,HTTPS 用于确保客户端与服务器之间的通信不被窃听或篡改。
加密传输
身份验证
数据完整性
证书校验
TLS 配置
ECDHE-RSA-AES256-GCM-SHA384
)。网络安全配置(Android)
network_security_config.xml
文件自定义证书信任规则,例如限制可信 CA 或启用证书锁定。ATS(iOS)
Info.plist
配置例外情况。