#tls #certificate #validation

c-certitude

C-ABI用于macOS和Windows的证书验证逻辑

2个稳定版本

使用旧Rust 2015

1.1.0 2017年5月24日
1.0.0 2016年3月7日

#2369密码学

MIT 许可证

7KB
81

Certitude for Rust

此仓库包含构建一个能够使用系统原生X.509堆栈验证证书的跨平台Rust库的验证性概念。

这受到Chrome网络浏览器选择在协议级别使用BoringSSL(OpenSSL的分支)进行TLS,但使用系统逻辑验证证书的启发。这使得Chrome应用程序在证书管理方面感觉“本地化”,而无需让他们的网络工程师了解每个平台原生TLS实现的特性。

API

此库的目标是提供两个API:一个适合Rust直接使用,另一个可以通过C ABI调用,以尽可能多的编程语言进行调用。这将使减少语言间的工作重复成为可能:每种语言只需要对Rust库进行一次FFI调用,然后由Rust库处理对各种平台的抽象。

Rust API目前看起来是这样的

extern crate certitude;

use certitude::platform::validate_cert_chain;

fn example() {
    // Assume certs is a Vector of DER-encoded certificates.
    let valid = validate_cert_chain(certs, "example.com");

    if valid {
        // The certificate chain is valid.
    } else {
        // The certificate chain is invalid in some way.
    }
}

macOS和Windows的实现可以透明地切换,这样使用此库的用户可以使用单个API,并直接使用适当的平台特定逻辑,而无需干预。当然,这需要针对正确的目标进行构建,但只要正确指定了目标,就会使用正确的代码版本。

工作进展

这目前是一个非常早期的beta版本,我主要在研究该方法的可行性。目前,该库支持macOS和Windows作为有效的证书验证平台。我将研究将其挂钩到OpenSSL的可行性,尽管这被认为是一个比在Windows和macOS上解决这个问题次要的问题,因为使用OpenSSL进行TLS的用户已经可以访问OpenSSL的原生验证逻辑。

依赖项

~42KB