1个不稳定版本
使用旧的Rust 2015
0.1.3 | 2016年10月12日 |
---|
#21 in #ca
在2个crate中使用(通过nss-webpki)
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