#tls #rust

sys mesalink

MesaLink 是一个基于 Rustls 和 Ring 的内存安全且兼容 OpenSSL 的 TLS 库

1 个版本 (0 个不稳定版本)

1.1.0-cratesio2019 年 8 月 16 日
1.0.0 2019 年 8 月 13 日
1.0.0-cratesio 2019 年 8 月 14 日
0.1.0 2019 年 8 月 13 日

51#ssl 中排名

每月 26 次下载

BSD-3-Clause

2.5MB
6K SLoC

包含 (ELF 可执行文件/库, 4MB) app, (ELF 库, 3.5MB) enclave.signed.so, (隐晦的 autoconf 代码, 11KB) configure.ac

一个内存安全且兼容 OpenSSL 的 TLS 库

这是 MesaLink 的一个特殊版本,在 crates.io 上作为类似于 openssl-sys 的 crate 分发。构建此 crate 不需要 CMake/Autotools。此版本使用 crates.io 上的 rustlswebpki,而不是我们的分支。

Build Status Coverage Status License

MesaLink 是一个内存安全且兼容 OpenSSL 的 TLS 库。

访问我们的网站: https://mesalink.io.

发行历史

  • 1.0.0 (🎂 04-02-2019 🎂)
    • CMake 支持;请参阅更新后的 CROSS_COMPILE.md 以获取交叉编译说明
    • Windows 构建(MSVC 和 MinGW)
    • CI/CD 迁移到 Azure Pipelines
    • Win64 可用的 NSIS 安装程序
    • 来自 parking_lot 的 Mutex/RwLock
    • 带有 hashbrown 的会话缓存
    • 可选的 jemalloc 内存分配器,带有 jemallocator
    • 更新后的网站
  • 0.8.0 (01-25-2019)
    • 40 个新的 OpenSSL API,涵盖 BIO、EVP_PKEY、PEM 和 X509
    • SSL_CTX 和 SSL 是线程安全的
    • 可配置的会话缓存
    • SHA1 签名已停止使用
    • 使用 rust-san 内存和泄漏清理器进行测试
    • Rust 2018 版本
    • 基于 rustls 0.15、webpki 0.19 和 *ring* 0.14
    • 自 7.62.0 以来 curl 的 TLS 后端
    • brpc 的 TLS 后端,一个工业级 RPC 框架;请参阅 patches 目录
    • 实验性的 SGX 远程证明用于不受信任的 enclave(请参阅 SGX_README.md
  • 0.7.2 (11-24-2018)
    • 客户端身份验证
    • 使用 armv7-linux-androideabi 为 Android 构建
  • 0.7.1 (09-05-2018)
    • SSL_CTX_load_verify_location
    • 修复重复的 floatdisf 符号

请参阅 OLD_CHANGES.md 了解更详细的历史变更。

特性亮点

  • 内存安全。由于 MesaLink 使用 Rust 编写,因此它不会受到像 Heartbleed 和缓冲区溢出这样的漏洞的侵害。
  • 跨平台。Linux、macOS、Android、Windows;x86、x86_64、armv7、aarch64... 你名字里有的。MesaLink 可能可以为其编译。
  • 现代密码套件。MesaLink 使用最佳密码套件,包括 AES-GCM、Chacha20Poly1305 和具有完美前向安全的椭圆曲线密钥交换。
  • TLS 1.3。自TLS 1.2以来已有八年,这个更快更安全的TLS标准现在已集成到Rustls和MesaLink中。
  • 闪电般快速。支持X25519密钥交换,AES-NI,无需像Java/Go这样的语言运行时。MesaLink在您的硬件上全速运行。
  • 灵活配置:MesaLink提供符合您需求的灵活配置。您可以自定义内置的加密套件和TLS版本。
  • 透明替换。MesaLink提供与OpenSSL兼容的C API。想在curl或Android中使用MesaLink?没问题。
  • 生产就绪。截至2018年12月,百度在生产中使用MesaLink,月活跃用户数达到1000万。

MesaLink依赖于两个Rust软件包:[rustls](https://github.com/ctz/rustls)和[sct](https://github.com/ctz/sct.rs)。借助它们,MesaLink提供以下功能,这些功能被认为是大多数用例中的安全选择:

  • TLS 1.2和TLS 1.3
  • ECDSA和RSA服务器身份验证
  • 强制主机名验证
  • 使用ECDHE实现前向保密;支持curve25519、nistp256或nistp384曲线。
  • 来自BoringSSL的安全且快速的加密原语
  • AES-128-GCM、AES-256-GCM和Chacha20-Poly1305批量加密
  • 内置Mozilla的CA根证书

支持的加密套件

  • TLS13-CHACHA20-POLY1305-SHA256
  • TLS13-AES-256-GCM-SHA384
  • TLS13-AES-128-GCM_SHA256
  • TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256
  • TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256
  • TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384
  • TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
  • TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384
  • TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256

单元测试

MesaLink使用cargo进行单元测试。只需运行cargo test

$ cargo test

BoringSSL SSL测试

[BoGo](https://github.com/google/boringssl/tree/master/ssl/test)是BoringSSL的协议级测试套件。我们已经将BoGo移植过来以测试MesaLink的功能和兼容性。要运行BoGo测试用例,请执行以下命令:

$ cd bogo && ./runme

致谢

MesaLink项目离不开Rust社区中的以下高质量开源项目。感谢代码和灵感!

  • rustls:由Joseph Birr-Pixton维护的Rust中的现代TLS库 @ctz
  • sct.rs:由Joseph Birr-Pixton维护的Rust中的证书透明度SCT验证库 @ctz
  • ring:由Brian Smith编写的Rust中的安全、快速、小巧的加密,@briansmith
  • webpki:由Brian Smith维护的Rust中的WebPKI X.509证书验证,@briansmith
  • crypto-bench:加密库的基准测试,由Brian Smith维护,@briansmith
  • 特别感谢Brian Smith的见解和有价值的讨论

维护者

  • 姜一鸣 <jingyiming@baidu.com> @kevinis

许可

MesaLink在3条款BSD许可下提供。有关副本,请参阅LICENSE文件。

依赖关系

~16MB
~378K SLoC