学习
简短的技术指南,讲解数字签名实际上是如何工作的——算法、字节级格式,以及导致验证失败的配置错误。专为这样的时刻而写:签名怎么也验证不过,错误信息又什么都没告诉你。
TLS
47 天 TLS 证书:时间表与需要自动化的环节
CA/B Forum 的 SC-081 提案把公开 TLS 证书有效期依次缩短到 200、100、47 天,域名验证复用期缩短到 10 天。具体日期、ACME 配置文件、ARI 与告警。
供应链
APK 签名方案 v1~v4、密钥轮换与 Play
详解 Android APK 签名:v1~v4 签名方案、v3 与 v3.1 的密钥轮换、新增的 ML-DSA 混合签名 v3.2、Play 应用签名,以及 apksigner verify 的输出。
供应链
Authenticode 代码签名:密钥、时间戳与验证
Authenticode 如何为 Windows 可执行文件签名、2023年起代码签名密钥必须使用 HSM 的规定、在证书过期后仍然有效的时间戳,以及 signtool 和 osslsigncode。
比特币
比特币消息签名详解:BIP-137 与 BIP-322
比特币消息签名的原理:BIP-137 头部字节、BIP-322 简单证明与完整证明、地址类型、钱包兼容性,以及经2026年实测的验证方法。
供应链
C2PA 内容凭证:清单、签名与局限
C2PA 内容凭证的工作原理:清单、声明与 COSE 签名,证书信任与时间戳,验证状态,以及重新编码为何会剥离内容凭证。
TLS
2026年的证书固定:何时使用,如何安全地固定
证书固定现状:浏览器为何放弃 HPKP,Android、iOS 应用与 OkHttp 中的 SPKI 固定值,短期证书下应用无法连接的风险,以及固定值轮换。
PKI
面向开发者的证书透明度:SCT 与告警
证书透明度在2026年如何运作:SCT 与日志,Chrome、Apple 和 Firefox 的规则,用 Cert Spotter 和 crt.sh 查找你的证书,以及监控。
电子邮件
DKIM 为何验证失败:正文哈希、签名错误、密钥与 DNS
DKIM 签名为何验证失败:规范化、正文哈希不匹配、转发与邮件列表、l= 标签、密钥长度和 DNS。附实测复现的失败案例与修复方法。
DNS
DNSSEC 信任链:DS、DNSKEY、RRSIG 及常见故障
DNSSEC 验证如何从根区域一路走到你的记录:DS、DNSKEY、RRSIG,算法 8、13 和 15,用 dig 和 delv 检查,以及密钥轮换导致的故障。
DPoP
DPoP 详解:把 OAuth 令牌绑定到客户端密钥
DPoP(RFC 9449)如何把 OAuth 访问令牌绑定到客户端密钥:证明 JWT、jti、htm、htu、ath、服务器 nonce、cnf.jkt,以及经过实测的资源服务器检查。
算法
ECDSA 公钥恢复:恢复 ID、v 与 ecrecover
ECDSA 公钥恢复的原理:数学推导、恢复 ID 与 v 值、以太坊的 ecrecover、比特币的紧凑签名、EIP-2098,以及要避开的常见错误。
以太坊
EIP-712:你实际签署的是什么,又该如何解读
详解 EIP-712 类型化数据:域、类型与哈希计算,ERC-2612 Permit、Permit2、无限授权,以及签名前如何解读签名请求。
JWT
JWT 选 ES256 还是 EdDSA:2026年选型建议
为 JWT 选 ES256 还是 EdDSA(Ed25519):大小、确定性、延展性、速度,13 个库的实测支持,云 KMS 与 HSM,新名称 Ed25519,以及2026年的推荐。
密钥管理
硬件支持的密钥:Secure Enclave、StrongBox、TPM、PIV
硬件支持的密钥能保证什么:Apple Secure Enclave、Android TEE 与 StrongBox、TPM 2.0 和 YubiKey PIV,如何用证明加以确认,以及局限。
HTTP 签名
HTTP 消息签名(RFC 9421):用于 API 和机器人
RFC 9421 HTTP 消息签名实战:覆盖的组件、Signature-Input、密钥、防重放、服务端检查,以及爬虫和 AI 智能体使用的 Web Bot Auth。
JWT
JWKS 密钥轮换:如何做到零停机
轮换 JWT 签名密钥而不让任何请求失败:kid 规则、重叠窗口、Cache-Control、7 个库的验证方缓存行为,以及紧急移除密钥。
JWT
JWT 验证常见错误:坏令牌是怎样通过验证的
线上代码中反复出现的 JWT 验证错误:从头部读取 alg、HS/RS 密钥混淆、kid、aud、iss、exp、时钟偏差和 JWKS 缓存,并附修正后的代码。
后量子
面向开发者的 ML-DSA:FIPS 204 密钥、签名与代码
ML-DSA(FIPS 204)实战:44/65/87 的大小、对冲与确定性签名、上下文、HashML-DSA、密钥格式,以及 OpenSSL、Go、Java、.NET 的实测代码。
TLS
API 双向 TLS(mTLS):客户端证书实战
API 双向 TLS:TLS 1.3 中客户端证书如何工作,私有 CA,nginx、Envoy、Go 与 Node.js 的配置,证书轮换,以及各自报出的错误信息。
PKI
2026年的 OCSP 与 CRL:吊销检查如今如何工作
Let's Encrypt 停用了 OCSP,CRL 成为强制要求,浏览器改用 CRLite 和 CRLSets。Java、.NET、Go、Python、Node.js 和 curl 默认检查什么,以及如何修复。
OpenID Connect
OIDC ID 令牌校验:逐步详解
按 Core 3.1.3.7 的要求校验 OpenID Connect ID 令牌:iss、aud、azp、签名、exp、nonce、at_hash 和 c_hash,以及 Entra ID、Google 和 Auth0 的特殊之处。
供应链
2026年的 OpenPGP:RFC 9580、v6 密钥与 GnuPG 分道扬镳
OpenPGP 现状:RFC 9580 与 v6 密钥、Ed25519 和 X25519、后量子 RFC 9980、GnuPG 的 LibrePGP 与 Sequoia 之争,以及互操作测试和建议。
通行密钥
面向开发者的通行密钥指南:实测 WebAuthn,不靠猜测
面向开发者的通行密钥:WebAuthn 注册与登录、证明、同步通行密钥、用户验证、COSE 算法和 DOMException 错误,全部经过实测。
文档
PDF 签名详解:ByteRange、CMS、PAdES 与 LTV
PDF 签名的工作原理:ByteRange、CMS 对象、PAdES 级别、RFC 3161 时间戳和 LTV,签名为何有效却不受信任,以及如何检查。
Java
Java 的 PKIX path building failed:原因与真正的解决方法
Java 为何抛出 PKIX path building failed:私有 CA、缺少中间证书、用错信任库、根证书过旧、缺少 SNI。附每种情况的诊断与修复方法。
后量子
2026年的后量子迁移:开发团队行动计划
2026年哪些环节已默认采用后量子方案、哪些仍需你自己改动,以及密钥交换与签名的真实截止日期(NIST IR 8547、CNSA 2.0、欧盟、英国)。
SAML
SAML 签名验证:检查什么,为什么检查
如何验证 SAML 签名:XMLDSig 引用、规范化、为什么数据必须取自已签名的元素,以及 Audience、Recipient 和时间检查。
SD-JWT
SD-JWT 与 SD-JWT VC:EUDI 钱包中的选择性披露
SD-JWT(RFC 9901)和 SD-JWT VC 如何用加盐摘要隐藏声明,密钥绑定如何防止重放,二者与 EUDI 钱包和 mdoc 的关系,以及2026年的现状。
算法
secp256k1 详解:比特币和以太坊背后的椭圆曲线
secp256k1 详解:曲线参数、让它更快的自同态、比特币和以太坊为何采用它、low-S、密钥与地址编码,以及平台支持情况。
以太坊
以太坊登录(SIWE,EIP-4361):在服务器端验证
正确实现以太坊登录:EIP-4361 消息,nonce、域名和 URI 检查,服务器端验证,以及智能合约钱包所需的 ERC-1271 和 ERC-6492。
供应链
用 Sigstore 为发布版本签名:cosign、签名包与身份
Sigstore 无密钥签名:Fulcio 证书、Rekor 日志、cosign 签名包、签名者身份检查、npm 来源证明与 GitHub 制品证明。
密钥管理
用云 KMS 签名:AWS、Google Cloud 和 Azure
用 AWS KMS、Google Cloud KMS 和 Azure Key Vault 签名:密钥类型、摘要还是消息、DER 与原始 ECDSA 签名、JWT 与文件、权限和审计日志。
SSH
SSH 证书与 authorized_keys 对比:CA 和主体
用 OpenSSH 证书取代 authorized_keys:用户 CA 和主机 CA、主体、有效期、ssh-keygen -s、sshd 配置、KRL 吊销,以及你会遇到的报错。
SSH
2026年的 ssh-keygen:密钥类型、密码短语与 SSH 代理
2026年该生成哪种 SSH 密钥:Ed25519、FIDO -sk 密钥、新的 ML-DSA 混合密钥、RSA 3072;KDF 轮数、代理转发的风险、证书与轮换。
TLS
X25519MLKEM768 详解:TLS 1.3 中的混合密钥交换
X25519MLKEM768 混合组在 TLS 1.3 中如何工作:密钥共享大小、码点 0x11EC、哪些软件默认启用、如何检查,以及它可能导致哪些故障。
PKI
X.509 证书字段详解:以真实证书为例
在真实证书上解读 X.509 字段:主体与 SAN、密钥用法与 EKU、基本约束、AKI 与 SKI、CRL、OCSP 与 AIA、SCT,以及每条规则如今的含义。
故障模式
ECDSA nonce 重用:一个重复的数如何泄露私钥
为什么重复使用 ECDSA nonce k 会泄露私钥:推导过程、PlayStation 3 和 Android 的事故、比特币上重复的 r 值,以及 RFC 6979 给出的修复方法。
格式
ECDSA 签名格式:DER 与原始格式(P1363)、high-S 及跨库陷阱
同一个 ECDSA 签名为何有 ASN.1 DER 与原始 r‖s(IEEE P1363)两种编码:字节布局、high-S 与 low-S,以及 Node.js、Go、Python 和 Java 的默认格式。
JWT
JWT 选 ES256 还是 RS256:如何选择,又如何避开陷阱
详解 ES256 与 RS256:JWT 的 alg 取值、令牌大小、固定算法允许列表、为何绝不能接受 alg none,以及 ES256 签名为何是原始 r‖s。
算法
ECDSA 与 RSA:选哪种签名算法,各在何时使用
ECDSA 与 RSA 对比:密钥和签名大小(P-256 与 RSA-3072)、速度,在 TLS、SSH、JWT 和区块链中的应用,nonce 要求,以及 NIST 后量子迁移期限。
更想直接摆弄真实的字节?签名实验室中的工具完全在你的浏览器中运行。