Rfc Deviations中文

RFC 已知偏差清单

与相关 RFC 标准已知不一致(含主动设计决策和待修复 bug),供集成方评估兼容性。


一、RFC 5280 — 证书与 CRL

# 偏差 类型 原因/说明
1 serialNumber 可能为负(首位 bit 未清 0) bug crypto/rand 20 字节全随机,缺少 buf[0] & 0x7f,违反 §4.1.2.2 "正整数"
2 CRL thisUpdate 未做单调性保证 bug Round(time.Second) + max(lastThisUpdate, now),时钟回拨可导致 thisUpdate 倒退
3 CRL nextUpdate 只用 thisUpdate + validityDays 未考虑签发延迟
4 Critical 标记依赖 profile 模板 可用性 keyUsage/basicConstraints/eku 等扩展的 critical 标记在各 profile 中手工定义,未统一校验 RFC 5280 要求(§4.2.1.3-9 要求部分扩展必须 critical)
5 Policy Mappings 未实现 主动放弃 仅 CA 间使用,无业务场景
6 Name Constraints 已实现但路径验证未集成 阶段 扩展已嵌入子 CA 证书,但 Go x509.Verify 不自动校验(需自定义验证器)
7 Subject Directory Attributes 未实现 主动放弃 极少使用
8 CRL Issuer Alternative Name 未实现 主动放弃 CRL 中不常用
9 Delta CRL / Freshest CRL 未实现 主动放弃 部署复杂,小规模场景无必要
10 Issuing Distribution Point 未实现 主动放弃 仅分区 CRL 需要
11 CRL 间接 CRL Certificate Issuer 未实现 主动放弃 仅间接 CRL 需要

二、RFC 3161 — TSA 时间戳协议

# 偏差 类型 原因/说明
1 响应包含完整 CA 链而非仅 TSA 签名证书 bug 违反 §2.4.2 响应最小化原则,过大的响应可能被网关拒绝
2 Email/File/Socket 传输未实现 主动放弃 仅实现 HTTP(§3.4),其他传输无实际需求
3 systemFailure 错误返回 HTTP 500 而非 PKIFailureInfo RFC 优于 HTTP 错误码,但实践兼容
4 badDataFormat / timeNotAvailable / addInfoNotAvailable 失败码未实现 主动放弃 场景未触发

三、RFC 6960 — OCSP

# 偏差 类型 原因/说明
1 Nonce 未按请求长度等长回显(可能填充/截断) bug 违反 §4.4.1 "回显请求中相同的值" — 应逐字节复制
2 responseExtensions 未填充 阻塞 Go x/crypto/ocsp 未导出 ResponseExtensions 字段,需 fork
3 singleExtensions 仅 Nonce,无其他扩展 仅 Nonce 有实际需求
4 Archive Cutoff 未实现 主动放弃 可选扩展
5 CRL 引用未实现 主动放弃 响应本身即为实时状态
6 签名请求验证未实现 主动放弃 部署中未强制
7 OCSP responseStatus 仅 successful 被使用 malformedRequest/internalError/tryLater/sigRequired/unauthorized 常量已定义但当前代码逻辑未触发

四、RFC 8555 — ACME

# 偏差 类型 原因/说明
1 HTTPS 未强制(依赖反向代理) 主动放弃 应用层不做 HTTPS 强制,部署文档说明需反向代理 TLS 终结
2 Content-Type 未检查 接收端宽容策略
3 Subproblems 数组未实现 主动放弃 RFC 8555 §6.7.1 可选,无实际需求
4 initialIp / createdAt 未记录 主动放弃 审计日志已有请求来源 IP
5 公钥查找账户 URL 未实现 主动放弃 RFC 8555 §7.3.1 推荐,非强制
6 预授权未实现 主动放弃 可通过 newOrder 替代
7 服务条款变更通知未实现 主动放弃 通知机制超出 ACL 范围
8 tls-alpn-01 / device-attest-01 未实现 主动放弃 无实际需求

五、RFC 8894 — SCEP

# 偏差 类型 原因/说明
1 GetNextCACert 返回相同 CA(无轮换) CA 证书未更换时行为正确;更换后需手动更新
2 PENDING 状态不支持,始终同步签发 设计决策 RFC 8894 §4.4 允许同步模式
3 GetCertInitial/GetCert/GetCRL 同步返回 设计决策 同 #2
4 SCEP 吊销消息未实现 主动放弃 可通过 REST API 吊销

六、RFC 3628 — TSA 策略要求

# 偏差 类型 原因/说明
1 TSA 实践声明未发布 阶段 v1.1 规划中
2 TSA 密钥轮换未实现 阶段 v1.2 规划中
3 无 HSM 支持 主动放弃 纯软件实现,HSM 可独立部署

严重性定义

等级 含义 处理原则
bug 违反 RFC MUST/SHOULD,可能引起互操作问题 P0-P1 修复目标
阻塞 已知但需上游修复后方可解决 建立 workaround 文档
违反 RFC MAY/可选条款,不影响主流互操作 P2 或更低优先级
主动放弃 设计决策,明确不实现 不修复,说明理由
阶段 规划中,后续版本实现 标注预期版本
可用性 不违反 RFC 但损害可用性 最佳实践改进