1 个版本 (0 个不稳定版本)
1.1.0-cratesio | 2019 年 8 月 16 日 |
---|---|
1.0.0 |
|
1.0.0-cratesio |
|
0.1.0 |
|
51 在 #ssl 中排名
每月 26 次下载
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 上的 rustls 和 webpki,而不是我们的分支。
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库 @ctzsct.rs
:由Joseph Birr-Pixton维护的Rust中的证书透明度SCT验证库 @ctzring
:由Brian Smith编写的Rust中的安全、快速、小巧的加密,@briansmithwebpki
:由Brian Smith维护的Rust中的WebPKI X.509证书验证,@briansmithcrypto-bench
:加密库的基准测试,由Brian Smith维护,@briansmith- 特别感谢Brian Smith的见解和有价值的讨论
维护者
- 姜一鸣
<jingyiming@baidu.com>
@kevinis
许可
MesaLink在3条款BSD许可下提供。有关副本,请参阅LICENSE文件。
依赖关系
~16MB
~378K SLoC