数字签名用私钥对消息摘要做签名运算,任何人用对应公钥验签,提供三个属性:真实性(确实由私钥持有者发出)、完整性(内容未被篡改,改动会导致摘要不匹配)、不可否认性。流程:发送方对消息做哈希 → 私钥签名 → 接收方用公钥验签并比对哈希。注意签名的是哈希值而非原文,否则大消息性能无法接受。
但签名本身解决不了"这个公钥属于谁"的问题,于是需要 PKI:CA(证书机构)核实申请者身份后,用自己的私钥为"域名+公钥"签发证书。信任链为:服务器证书 ← 中间 CA ← 根 CA。根 CA 证书预置在操作系统/浏览器中作为信任锚;校验时逐级验签直到可信根。中间 CA 的存在是为了让根私钥离线保存,降低泄露风险。
易错点:自签名证书不被信任不是算法问题而是信任锚缺失;证书泄露私钥需吊销(CRL/OCSP,OCSP Stapling 兼顾性能与隐私);内网可建私有 CA,但客户端必须预装根证书。追问方向:证书透明日志、Let's Encrypt 的 ACME 自动化、代码签名证书。