valkyoth/vardheim

GitHub: valkyoth/vardheim

一个基于 Rust 的 no_std、安全优先的 ACME 证书生命周期框架,通过 RFC 驱动的里程碑逐步实现生产级证书自动化管理能力。

Stars: 0 | Forks: 0

安全优先的 ACME 和 Rust 证书生命周期基础。
严格的协议边界、持久的工作流规划、no_std 可移植性,以及安全门控的发布证据。

Crates.io | Docs.rs | 发布计划 | 威胁模型 | 安全

Vardheim Rust crate overview

# vardheim `vardheim` 是一个 `no_std` 优先的 Rust workspace,专注于安全的 ACME 和证书生命周期构建块。 该项目的目标是在 `1.0.0` 时成为一个严肃的生产级证书生命周期框架,该目标通过一系列包含明确的 RFC、安全性、兼容性、依赖、测试和渗透测试证据的小型版本来实现。协议逻辑与网络、runtime、加密提供者、挑战呈现、持久化存储和证书部署保持分离。 ## 当前状态 状态:`v0.3.1` 已发布;渗透测试、修复重测和 GitHub 检查均已通过。 Vardheim 目前尚不能签发、验证、续期、吊销或部署证书。当前的发布确立了在开始实现安全敏感的协议之前所需的 crate 边界和强制执行机制。 目前已实现: - 锁定到稳定版 `1.97.0` 的 Rust workspace。 - MSRV 策略以及对 Rust `1.90.0` 到 `1.97.0` 的验证检查。 - 无依赖的 `no_std` facade、核心和 challenge-family crate。 - 面向未来的 HTTP、DNS 和 TLS challenge crate 边界。 - Workspace 级别的 `#![forbid(unsafe_code)]`。 - 每个 Rust 源文件最多 500 行的策略。 - MIT OR Apache-2.0 许可证。 - GitHub CI、CODEOWNERS、赞助、Dependabot 和 SHA 锁定的 Actions。 - GitHub CodeQL 默认设置策略。 - cargo-deny、cargo-audit、package、文档和 SPDX SBOM 门控。 - 在每个 tag 之前,必须对已审查的实现进行强制渗透测试。 - 独立的 crate 版本和依赖顺序发布强制机制。 - 直至 `1.0.0` 的完整实现和版本计划。 - 对所有必需的 RFC 文本进行追踪、字节锁定的参考副本,且不包含在已发布的 crate 中。 - 生成的证据表明,每个已发布的 ACME 系列文档中的所有规范性 RFC 引用都存在于包含 105 个文档的本地源集中。 - 为所有被追踪的 RFC 生成了完整的章节索引,并为每个已发布的 ACME RFC 审查了所有状态的勘误证据。 - 包含 13 个 IANA ACME 注册表中所有 107 条记录、当前 HTTP 替代方案、支持性标准以及锁定的外部 profile 修订的完整边界测试夹具。 - 所有非 RFC 的规范 ACME 源的完整清单,包括字节锁定的支持性 IANA 注册表和确切的外部修订版本。 - Linux、Windows、BSD、macOS、Android、iOS 以及未来的自定义目标架构需求。 尚未实现: - 没有 ACME 目录或账户操作。 - 没有 JOSE、JWK、JWS、EAB 或 nonce 实现。 - 没有 order、authorization、challenge、finalization 或 revocation 工作流。 - 没有 CSR 或证书解析与验证。 - 没有 HTTP、DNS、TLS、加密、存储或部署后端。 - 没有持久化编排、CLI、daemon 或远程代理。 - 没有稳定的 RFC 一致性声明。 [发布计划](https://github.com/valkyoth/vardheim/blob/main/docs/RELEASE_PLAN.md) 中为每个缺失项都提供了具体的 1.0 之前版本。 已知需求中不存在未指定版本的 1.0 之后待办事项。 ## 信任仪表板 | 领域 | 状态 | | --- | --- | | 许可证 | `MIT OR Apache-2.0` | | MSRV | Rust `1.90.0` | | 锁定的工具链 | Rust `1.97.0` | | 默认目标 | `no_std` | | 外部依赖 | 零 | | Unsafe 策略 | 第一方 crate 使用 `#![forbid(unsafe_code)]` | | 默认网络 | 无 | | 默认加密后端 | 无 | | 最大 Rust 源文件大小 | 500 行物理代码 | | 发布证据 | checks、deny、audit、SBOM、已审查实现的渗透测试 | | crates.io 负载 | 仅包含 Cargo 元数据、crate README 和 Rust 源码 | | Panic 策略 | 由应用程序所有;预期失败使用类型化错误 | | 当前 RFC 一致性 | 未声明 | | 1.0 目标 | 完整的生产级 ACME 生命周期框架 | ## 安装 最新发布的基础版本是: ``` [dependencies] vardheim = "0.3.1" ``` 大多数用户应该只依赖于 `vardheim`。较低层级的 crate 适用于需要直接协议或 challenge-family 边界的应用程序。 ## Workspace Crates | Crate | 职责 | | --- | --- | | `vardheim` | 公共 facade 和通用 re-exports | | `vardheim-core` | 有界的、runtime 无关的 ACME 协议基础 | | `vardheim-challenge-http` | 当前和未来的 HTTP challenge 方法 | | `vardheim-challenge-dns` | 当前和未来的 DNS challenge 方法 | | `vardheim-challenge-tls` | 当前和未来的 TLS challenge 方法 | challenge crate 的名称特意不包含协议修订号。例如,`dns-01` 和未来的 `dns-02` 属于 `vardheim-challenge-dns` 内部的版本化模块,而不是独立的包。 `vardheim-rustls` 被分配为 `0.51.0` 版本,将在通用的 TLS challenge 身份边界完成后发布。`vardheim-pkix` 被分配为 `0.28.1` 版本,作为轻依赖的证书解析和验证边界。重量级的加密、DNS SDK、runtime、数据库、HTTP 框架和 TLS 集成仍然是明确选择的独立适配器包,而不是可移植核心或 challenge crate 的功能。 ## Rust 版本支持 最低支持的 Rust 版本是 `1.90.0`。新的开发和发布验证使用锁定的稳定版 Rust `1.97.0`。 | Rust | 要求的证据 | | --- | --- | | `1.90.0` | `cargo check --workspace --all-features` | | `1.91.0` | `cargo check --workspace --all-features` | | `1.92.0` | `cargo check --workspace --all-features` | | `1.93.0` | `cargo check --workspace --all-features` | | `1.94.0` | `cargo check --workspace --all-features` | | `1.95.0` | `cargo check --workspace --all-features` | | `1.96.0` | `cargo check --workspace --all-features` | | `1.96.1` | `cargo check --workspace --all-features` | | `1.97.0` | 完整的本地和发布门控 | ## 平台策略 Runtime 无关的 crate 必须在 Linux、Windows、BSD、macOS、Android、iOS 和自定义 `no_std` 目标之间保持可移植性。特定于平台的适配器位于核心之外,并在不受支持的目标上以关闭状态失败。时钟、熵、网络、存储、签名、内存分配和部署保持可注入性,因此未来的自定义操作系统不会被锁定在外。 ## 安全与发布策略 每次发布,包括补丁和候选版本,都会暂停以对确切的实现 commit 进行独立的渗透测试。如果没有永久的 `Status: PASS` 报告,tag 就无法通过发布门控。 阅读: - [架构](https://github.com/valkyoth/vardheim/blob/main/docs/architecture.md) - [实现计划](https://github.com/valkyoth/vardheim/blob/main/docs/IMPLEMENTATION_PLAN.md) - [发布计划](https://github.com/valkyoth/vardheim/blob/main/docs/RELEASE_PLAN.md) - [纵向回归策略](https://github.com/valkyoth/vardheim/blob/main/docs/REGRESSION_STRATEGY.md) - [ACME 完整性契约](https://github.com/valkyoth/vardheim/blob/main/docs/COMPLETENESS.md) - [RFC 清单](https://github.com/valkyoth/vardheim/blob/main/docs/RFC_INVENTORY.md) - [注册表基准](https://github.com/valkyoth/vardheim/blob/main/docs/REGISTRY_BASELINE.md) - [RFC 勘误基准](https://github.com/valkyoth/vardheim/blob/main/docs/RFC_ERRATA.md) - [威胁模型](https://github.com/valkyoth/vardheim/blob/main/docs/threat-model.md) - [安全控制](https://github.com/valkyoth/vardheim/blob/main/docs/security-controls.md) - [兼容性](https://github.com/valkyoth/vardheim/blob/main/docs/compatibility.md) - [发布流程](https://github.com/valkyoth/vardheim/blob/main/docs/release-process.md) - [Crate 发布策略](https://github.com/valkyoth/vardheim/blob/main/docs/CRATE_RELEASES.md) ## 开发 ``` scripts/checks.sh scripts/check-rust-version-matrix.sh cargo deny check cargo audit scripts/generate-sbom.sh scripts/release_crates.py --check scripts/validate-package-contents.py python3 scripts/test-package-contents.py python3 scripts/audit_release_plan.py docs/RELEASE_PLAN.md python3 scripts/test-release-plan-audit.py scripts/rfc_inventory.py scripts/rfc_errata.py scripts/registry_baseline.py python3 scripts/test-registry-baseline.py ``` 网络化新鲜度检查会验证锁定的 Cargo 工具和 GitHub Actions: ``` scripts/check_latest_tools.sh ``` ## 许可证 根据以下任一许可证授权: - Apache License, Version 2.0 - MIT License 由您自行选择。
标签:ACME协议, no_std, Rust, 可视化界面, 密码学与证书, 底层编程, 开发框架, 生命周期管理, 网络流量审计