跳到主要内容
ecdsa.com

学习

简短的技术指南,讲解数字签名实际上是如何工作的——算法、字节级格式,以及导致验证失败的配置错误。专为这样的时刻而写:签名怎么也验证不过,错误信息又什么都没告诉你。

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 后量子迁移期限。

更想直接摆弄真实的字节?签名实验室中的工具完全在你的浏览器中运行。