OCSP Stapling 详解:原理、配置与排查

什么是 OCSP Stapling OCSP Stapling(正式名称为 TLS Certificate Status Request)是一种 TLS 扩展机制,允许服务端在 TLS 握手过程中主动向客户端提供证书的状态信息,而无需客户端自行向 CA 的 OCSP 响应服务器发起查询。 它的核心价值在于:将证书状态验证的责任从客户端转移到服务端,同时保护用户隐私、提升连接速度。 为什么需要 OCSP Stapling 要理解 OCSP Stapling 的价值,先看没有它时证书撤销检查的三种方式。 方式一:CRL(证书吊销列表) CA 定期发布一个包含所有已吊销证书序列号的列表(CRL),客户端下载后自行检查。 1 2 # 查看 CRL 分布点(CRL Distribution Points) openssl x509 -in cert.pem -noout -text | grep -A2 "CRL Distribution" 问题很明显:CRL 文件会随着时间不断增长,下载和解析开销越来越大。即使使用增量 CRL(Delta CRL),也难以应对大规模部署。 方式二:OCSP(在线证书状态协议) 客户端直接向 CA 的 OCSP 响应服务器发送查询,获取单张证书的实时状态。 1 2 3 # 提取证书的 OCSP 响应器 URL openssl x509 -in cert.pem -noout -ocsp_uri # 示例输出: http://ocsp....

April 21, 2026 · 6 min · 黑豆子

TLS 密码套件命名规范解析

在配置 TLS/SSL 时,我们经常看到类似 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 这样的密码套件名称。对于初学者来说,这串字符可能令人困惑。本文将详细解析 TLS 密码套件的命名规范,帮助你理解每个部分的含义。 什么是密码套件 密码套件(Cipher Suite)是 TLS 协议的核心组件,它定义了一整套加密算法组合,包括: 密钥交换算法 身份认证算法 加密算法 哈希算法 一个密码套件决定了 TLS 握手期间如何协商安全参数,以及如何加密传输的数据。 TLS 1.2 密码套件命名格式 TLS 1.2 采用以下命名格式: 1 TLS_密钥交换算法_认证算法_加密算法_哈希算法 以 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 为例: 组成部分 含义 TLS 协议名称 ECDHE 密钥交换算法(Elliptic Curve Diffie-Hellman Ephemeral) RSA 身份认证算法 AES_256_GCM 加密算法(AES,256位,GCM模式) SHA384 哈希算法 各组件详解 密钥交换算法(Key Exchange) ECDHE:椭圆曲线临时 Diffie-Hellman(推荐,前向安全) DHE:临时 Diffie-Hellman(传统但性能较低) RSA:基于 RSA 的密钥交换(已被废弃,不提供前向安全) ECDH:椭圆曲线 Diffie-Hellman(静态) 认证算法(Authentication) RSA:RSA 公钥证书 ECDSA:椭圆曲线数字签名算法 DSS:数字签名标准(较老) 加密算法(Cipher) AES_256_GCM:AES 加密,256位密钥,GCM 模式(推荐) CHACHA20-POLY1305:Google 开发的流密码(移动设备友好) AES_128_CCM:AES 加密,128位密钥,CCM 模式 ARIA256-GCM:韩国标准加密算法 哈希算法(MAC/Hash)...

April 20, 2026 · 2 min · 黑豆子

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 · 黑豆子