#证书 #mozilla #ca #store #programs #root #embedding

mozilla-ca-certs

Mozilla CA证书存储库,预先解析以嵌入到Rust程序中

1个不稳定版本

使用旧的Rust 2015

0.1.3 2016年10月12日

#21 in #ca


2个crate中使用(通过nss-webpki

MPL-2.0许可证

325KB
123 代码行

Mozilla CA证书,作为一个Rust crate

此crate将Mozilla CA证书存储库的大部分信息静态嵌入到Rust程序中。这包括所有证书和原始信任条目,以及更有限的信任根和明确的不信任项目。

还有一个(默认启用,可选)与webpki的集成,它将TLS服务器信任根公开为webpki TrustAnchor

警告

Mozilla CA策略主要是一组信任根,但有一些更复杂的情况,并且它们还没有完全反映在这个crate中。例如,CNNIC根:官方政策是除了1,427个已颁发证书的固定列表外不可信,但通过将根标记为完全可信在certdata.txt中表达,并将限制作为Firefox中的C++代码中的限制来体现。因为这个crate目前只是certdata.txt的翻译,所以这些根被列为可信,而实际上更接近于不可信。

webpki-roots crate也以webpki形式表示Mozilla CA证书存储库,但它自己做出策略决定,并特别排除了像CNNIC这样的几乎不可信的根。它不尝试表示来自certdata.txt的不信任。

构建方式也不同:webpki-roots包括预生成的源和Python脚本,用于通过从Web服务检索证书来重建它,而此crate包括certdata.txt的副本,并在构建时进行解析/翻译。

问题

  • 正确表示Mozilla关于半信任证书的政策(请参阅上面的警告部分)。

  • Rust编译器在处理大量[u8]字面量时速度并不快。通过避免在源代码中重复和/或允许依赖crate选择不构建它们不使用的部分,可能可以改善构建时间。

  • 为在信任列表中进行查找添加一些简单的工具(并在实现时扩展到其他形式的信任)。

依赖关系

~0–8.5MB
~72K SLoC