HSTS:强制 HTTPS 访问的安全机制

什么是 HSTS? HSTS(HTTP Strict Transport Security)是一种网络安全策略机制,允许网站声明浏览器必须仅通过 HTTPS 连接访问。一旦服务器发送 Strict-Transport-Security 响应头,浏览器就会记住这个指令,在指定时间内(max-age)自动将所有 HTTP 请求转换为 HTTPS。 HSTS 响应头格式 1 Strict-Transport-Security: max-age=<过期时间>; includeSubDomains; preload 参数说明 参数 说明 max-age 浏览器记住该规则的时长,单位为秒。例如 31536000 代表一年 includeSubDomains 可选指令,作用范围包含所有子域名 preload 可选指令,表示该域名申请加入 HSTS 预加载列表 实际案例 查看主流网站的 HSTS 头配置: 1 2 # 使用 curl 查看 HSTS 响应头 curl -sI https://cloudflare.com | grep -i strict-transport-security 输出示例: 1 Strict-Transport-Security: max-age=15552000; includeSubDomains 验证多个网站 1 2 3 4 5 # 检查不同网站的 HSTS 配置 for domain in cloudflare....

April 19, 2026 · 2 min · 黑豆子

TLS 1.2 与 TLS 1.3 的主要区别

TLS(Transport Layer Security)协议是 HTTPS 的核心安全保障。从 TLS 1.2 到 TLS 1.3,协议经历了重大改进。本文详细对比两者的主要区别,帮助你理解为什么应该优先使用 TLS 1.3。 握手过程:从 2-RTT 到 1-RTT TLS 1.2 的完整握手需要两次往返(2-RTT): 1 2 3 4 ClientHello + ServerHello + 证书 + 密钥交换 → ← ServerKeyExchange + 证书请求 + ServerHelloDone ClientKeyExchange + 证书验证 + Finished → ← Finished → 应用数据 TLS 1.3 将握手优化为一次往返(1-RTT): 1 2 3 ClientHello + 密钥交换材料 → ← ServerHello + 密钥交换材料 + 证书 + Finished Finished → 应用数据 TLS 1.3 还支持 0-RTT 模式,允许在首次连接时就开始发送加密数据,但需要预先共享密钥。...

April 18, 2026 · 2 min · 黑豆子

AES 分组加密模式详解:ECB、CBC、CTR、GCM

深入解析 AES 分组加密的四种工作模式:ECB、CBC、CTR、GCM,理解各模式的原理、安全性和适用场景。

April 17, 2026 · 3 min · 黑豆子

OCSP 证书状态在线检查

OCSP(Online Certificate Status Protocol)是用于实时检查证书是否被吊销的协议。相比 CRL,OCSP 无需下载完整吊销列表,查询效率更高。本文介绍 OCSP 原理及 OpenSSL 命令行操作。 什么是 OCSP? 当浏览器验证 TLS 证书时,除了检查证书链和有效期,还需确认证书未被吊销。传统方式是下载 CRL(Certificate Revocation List),但列表会随时间增长。OCSP 允许客户端直接查询证书颁发机构,获取特定证书的实时状态。 OCSP 响应类型 状态 含义 good 证书有效,未被吊销 revoked 证书已被吊销 unknown 响应者不知道该证书 从证书提取 OCSP 信息 获取证书的 OCSP 响应者地址 1 openssl x509 -in certificate.crt -noout -ocsp_uri 输出示例: 1 http://ocsp.digicert.com 获取颁发者信息 OCSP 查询需要知道证书的颁发者(CA): 1 2 3 4 5 # 获取证书颁发者 openssl x509 -in certificate.crt -noout -issuer # 获取颁发者证书 openssl x509 -in certificate.crt -noout -issuer_hash 实际 OCSP 查询示例 使用 OpenSSL 进行 OCSP 查询 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 获取目标证书和颁发者证书 openssl s_client -connect google....

April 16, 2026 · 3 min · 黑豆子

ECDSA 数字签名算法详解

ECDSA(Elliptic Curve Digital Signature Algorithm)是基于椭圆曲线密码学的数字签名算法,广泛应用于比特币、区块链以及 TLS 证书中。本文介绍其原理及 OpenSSL 命令行操作。 什么是 ECDSA? ECDSA 是 DSA(Digital Signature Algorithm)的椭圆曲线版本,利用椭圆曲线离散对数问题的计算难度来保证签名安全性。相比传统 RSA,ECDSA 在相同安全强度下密钥更短,运算更快。 常见曲线 曲线 位数 应用场景 prime256v1 (P-256) 256 位 主流 TLS 证书、Web 应用 secp384r1 (P-384) 384 位 高安全场景、政府、金融 secp521r1 (P-521) 521 位 极高安全需求 生成 ECDSA 密钥对 生成私钥 1 2 3 openssl genpkey -algorithm EC \ -pkeyopt ec_paramgen_curve:prime256v1 \ -out ecdsa_private.pem 导出公钥 1 openssl pkey -in ecdsa_private.pem -pubout -out ecdsa_public.pem 查看密钥详情 1 openssl pkey -in ecdsa_private....

April 15, 2026 · 2 min · 黑豆子

RSA 填充方案:OAEP 与 PSS 安全实践

详解 RSA 加密和签名中的填充方案,解释为什么 PKCS#1 v1.5 不安全,以及如何使用 OAEP 和 PSS 提升安全性。

April 14, 2026 · 3 min · 黑豆子

Diffie-Hellman 密钥交换原理与实践

Diffie-Hellman(DH)密钥交换协议是现代密码学的基石之一,它解决了在不安全信道上协商共享密钥的难题。本文将讲解 DH 的原理,并通过 OpenSSL 演示实际操作。 问题背景 假设 Alice 和 Bob 想要通过公开信道协商一个共享密钥,用于后续的加密通信。如果信道被窃听者监听,如何安全地交换密钥? 传统方案需要一个安全的密钥传输渠道,但这往往不现实。Diffie-Hellman 协议巧妙地解决了这个问题:双方可以在公开信道上协商出共享密钥,而窃听者无法得知最终密钥。 数学原理 离散对数难题 DH 的安全性基于离散对数难题: 对于素数 p 和生成元 g,已知 g^a mod p 很容易计算,但从结果反推 a 却极其困难(当 p 足够大时)。 密钥交换流程 假设参数 p(大素数)和 g(生成元)已公开: 1 2 3 4 5 6 7 8 9 10 11 12 13 Alice Bob ---------------------------------------------- 1. 选择私钥 a(随机数) 1. 选择私钥 b(随机数) 2. 计算公钥 A = g^a mod p 2. 计算公钥 B = g^b mod p 3. 发送 A 给 Bob --------> 3....

April 13, 2026 · 3 min · 黑豆子

Ed25519 密钥算法详解

Ed25519 是一种基于 EdDSA(Edwards-curve Digital Signature Algorithm)的数字签名算法,使用 Curve25519 椭圆曲线的变形 Ed25519。相比传统的 RSA 和 ECDSA,Ed25519 在安全性、性能和易用性上都有显著优势,已成为现代密码学的首选签名算法之一。 Ed25519 的核心优势 1. 密钥体积小 Ed25519 的密钥非常紧凑,公钥仅 32 字节,私钥 32 字节(种子)。这相比 RSA 2048 的 256 字节公钥和 1700+ 字节的私钥,存储和传输成本大幅降低。 公钥长度对比: 1 2 3 Ed25519 公钥: 82 字节(Base64 编码后) RSA 2048 公钥: 382 字节(Base64 编码后) ECDSA P-256 公钥: 162 字节(Base64 编码后) 2. 签名速度快 Ed25519 的签名和验证速度都非常快。其设计充分利用了现代 CPU 的特性,比 ECDSA 快约 3-5 倍,比 RSA 快得多。 3. 安全性高 128 位安全强度:等效于 RSA 3072 位或 AES-128 抗侧信道攻击:实现设计避免了时序攻击等侧信道风险 确定性签名:不需要随机数生成器,避免了 ECDSA 的随机数重用漏洞 4....

April 12, 2026 · 3 min · 黑豆子

双向 TLS 认证实战指南

什么是双向 TLS 认证 普通 HTTPS 连接中,客户端验证服务器证书,确保连接的是真实的服务器。双向 TLS(Mutual TLS,简称 mTLS) 在此基础上增加了服务器对客户端的验证——客户端必须提供有效的证书才能建立连接。 这种认证方式比用户名密码更安全,广泛用于: API 服务间的身份认证 零信任网络架构 企业内部系统访问控制 高安全要求的金融、医疗系统 工作原理 mTLS 握手过程: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 客户端 服务器 | | |---------- ClientHello --------------->| |<--------- ServerHello ----------------| |<--------- Certificate ----------------| (服务器证书) |<--------- CertificateRequest ---------| (请求客户端证书) |<--------- ServerHelloDone ------------| | | |---------- Certificate ---------------->| (客户端证书) |---------- ClientKeyExchange --------->| |---------- CertificateVerify --------->| (证明拥有私钥) |---------- Finished ------------------>| |<--------- Finished -------------------| | | |====== 加密通信通道 ====================| 关键区别:服务器发送 CertificateRequest,客户端响应自己的证书并用私钥签名证明身份。...

April 11, 2026 · 3 min · 黑豆子

OpenSSL passwd 命令:生成密码哈希

OpenSSL passwd 命令用于生成 Unix 密码哈希,支持 SHA-512、SHA-256、MD5 等算法,适用于系统管理和脚本场景。

April 10, 2026 · 2 min · 黑豆子