-
Notifications
You must be signed in to change notification settings - Fork 29
Review Transport Layer Security solutions #40
Comments
We have strong requirements of our TLS libraries, mostly to do with using all corners of client cert validation. In general, the cross platform libraries seem to be insufficiently powerful - we end up needing the full OpenSSL (or equiv) API. A platform agnostic API would be nice, but its secondary to having the right functionality even if it needs multiple implementations/conditional code. |
@jsgf I found |
We should also consider to wrap existing OS-native APIs like it's done in
The first point might be solvable, but it would result in a whole bunch of platform-dependent code, probably even calling unstable APIs. |
It's not totally the same as this issue, but I'd really like to see a well-adopted set of traits abstracting over TLS usage between applications and libraries. This means libraries implementing higher level protocols (eg, HTTP/1, HTTP/2, WS, etc.) can interact with TLS via these traits, and leave the concrete choice to higher in the application stack. There are already things in this direction: tls-api notably -- but it would benefit from people power to gain maturity. But sadly there's a huge number of protocol-level crates use native-tls directly, and native-tls is the defacto choice for TLS in the ecosystem. That's unfortunate, in my opinion. Particularly if you compare the golang and Rust ecosystems: golang comes out-of-the-box with a memory-safe, enthusiastically-maintained and well-regarded TLS stack whose use is pervasive. Rust comes with -- well nothing -- but most commonly people use libraries with a long history and uncertain future of catastrophic memory safety bugs :( I think the first step in making this situation better is to make it easier for people to choose alternatives. (Disclosure: I'm the author of rustls) |
I very much agree with @ctz. I think people use Rust in part because they believe it will be more secure in security-sensitive contexts, and the best we can do is make it easy to swap out the old and mature but often vulnerable libraries out for pure Rust implementations, so that those can mature. |
There are lots of options available, we should look into answering the following questions for each of the options to a newcomer (or myself, because I personally want to know what to use)
The text was updated successfully, but these errors were encountered: