数字签名与证书
理解数字签名如何证明真实性,以及 X.509 证书如何将身份绑定到密钥。
数字签名与证书 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。
什么是数字签名
数字签名可以证明文档或消息由特定的私钥持有者创建,且未被修改。与手写签名不同,数字签名在数学上与内容绑定,任何更改都会使签名失效。
签名如何工作
签名流程:
- 计算文档的哈希值:
H = SHA256(document) - 使用私钥加密哈希值:
sig = RSA_encrypt(H, private_key) - 将签名附加到文档
验证过程:使用公钥解密 sig,重新计算哈希值,然后进行比较。
ECDSA 和 EdDSA
现代签名算法:
- ECDSA(使用 P-256)— 用于 TLS 证书和 Bitcoin
- Ed25519(EdDSA)— 速度更快、更加简单,不存在每次签名随机数导致的漏洞,用于 SSH 和 Signal
对于新应用,优先选择 Ed25519。
什么是证书
数字证书(X.509)将公钥与身份绑定。它包含:主体名称、公钥、有效期、签发者以及 CA 的数字签名。访问 HTTPS 网站时,服务器会出示其证书以证明自己的身份。
证书颁发机构(CA)
证书颁发机构(CA)是受信任的实体,会在验证申请者身份后为证书签名。浏览器和 OS 的信任存储中包含根 CA 证书。信任链为:根 CA → 中间 CA → 终端实体证书。
Let's Encrypt 与免费证书
Let's Encrypt 是一个免费的自动化 CA。它签发有效期为 90 天的域名验证(DV)证书,并可通过 ACME 协议自动续期。自 2015 年以来,它显著提高了 HTTPS 的普及率。
certbot --nginx -d example.com -d www.example.com
# Auto-renewal via cron or systemd timer证书类型
证书验证级别:
- DV(域名验证) — 仅证明对域名的控制权
- OV(组织验证) — 验证组织确实存在
- EV(扩展验证) — 严格的身份验证(绿色栏,现已被浏览器弃用)
证书撤销
遭到泄露的证书必须被撤销:
- CRL(证书撤销列表) — 可下载的已撤销序列号列表
- OCSP(在线证书状态协议) — 实时检查单个证书
- OCSP 装订 — 服务器在 TLS 握手中附加由 CA 签名的 OCSP 响应
证书透明度(CT)
证书透明度日志是每张已签发证书的公开、只能追加的记录。浏览器要求证书包含 CT 证明。这使得人们能够在数小时内发现错误签发的证书。搜索:crt.sh
curl "https://crt.sh/?q=example.com&output=json" | python3 -m json.tool代码签名
软件发布者使用代码签名证书为可执行文件签名。OS 会在执行前验证签名。这可以防止被篡改的二进制文件在不知情的情况下运行。macOS Gatekeeper 和 Windows SmartScreen 会强制执行代码签名策略。
证书固定
证书固定会将预期的证书或公钥硬编码到应用程序中。即使恶意 CA 签发了欺诈性证书,启用了证书固定的应用也会拒绝它。证书固定常用于移动应用和高安全性服务。更新较为困难,请谨慎使用。
快速检查:证书
哪种机制可以让浏览器实时检查某个特定证书是否已被吊销?
课程回顾
数字签名使用私钥证明真实性和完整性。证书将公钥与身份绑定,并由证书颁发机构签名。Let's Encrypt 提供免费的 DV 证书。证书吊销状态通过 CRL 或 OCSP 查询。证书透明度日志可以检测错误签发的证书。Ed25519 是当前首选的现代签名算法。
常见问题解答
「数字签名与证书」课时是免费的吗?
是的 — 「数字签名与证书」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。
「数字签名与证书」这节课中我会学到什么?
理解数字签名如何证明真实性,以及 X.509 证书如何将身份绑定到密钥。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cyber Security Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「数字签名与证书」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cyber Security Academy 课中编写并运行代码吗?
能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。