-
Notifications
You must be signed in to change notification settings - Fork 479
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HTTPS/TLS Support in tusd #418
Comments
Interesting requirement. tusd can also listen on a UNIX socket, so no TCP network is used. Does that help in your case? If not, please open a PR. Please also research if we should supply a custom TLS configuration for ServeTLS (such as in https://github.com/denji/golang-tls#perfect-ssl-labs-score-with-go) or if the default values are sensible. |
The UNIX socket solution would only work sometimes for us — I don't have the details to hand, but I recall there was a hook there. It's certainly easier for us to contemplate contributing code ;). I'll work up a full PR and get it posted soon. It will likely have a few options for TLS configuration: I had been thinking in the intervening time that, as far as as options go, disabling ≤TLSv1.1 by default would be a good idea. |
Sounds good 👍 Looking forward to your contributions :) |
PR opened :). The one open item on my end is that I'm still researching the consequences of including the |
PR updated; the RSA-based key transport ciphersuites removed; Mozilla excludes them because they don't support Forward Secrecy. |
I am fine with that move. We don't have to maintain backwards compatibility here so let's not include ciphers which should not be used. Thank you very much for the efforts! |
Is your feature request related to a problem? Please describe.
We (Kira Systems) would like to use tusd as a component in our application, and although it will actually would be proxied (and load balanced, and so forth), our problem is that we cannot have a “gap” between the proxy and tusd. Using apache/nginx/haproxy/etc as a TLS-terminator leaves the connection between the proxy and tusd as completely unprotected plaintext. Our particular network design requirements (which come, in part, from our clients) are such that unencrypted connections between components are not allowed, and forbidding unencrypted connections allows us to create a network that prevents data leakage even in scenarios where the attacker can capture all of the traffic.
So, the problem is that tusd does not natively support encrypted connections.
Describe the solution you'd like
I'd like to add HTTPS/TLS support to tusd.
Describe alternatives you've considered
We've considered TLS termination, but as described above, it does not satisfy our needs.
Can you provide help with implementing this feature?
I'm happy to provide the code and necessary documentation.
Additional context
Originally I started an email conversation with @Acconut, as I don't know if this is a sensitive topic in the community; he ultimately directed me to open an issue (so here I am). The original email exchange follows, then some follow-up.
and
Not long after, @Acconut replied
@Acconut's reply does provide some perspective, but the usual solution won't work for us.
I would like to address a couple points here:
Regarding "production-readiness": I suspect that the golang crypto/tls library is about as sound as any out there — it’s actively maintained by google engineers, and likely is the implementation of TLS in nearly every application written in golang. This includes things like Kubernetes, Hashicorp’s Vault, and the Caddy webserver — granted, that’s social proof, but golang’s TLS implementation is being used in production.
"more than just setting the certificate": I definitely agree that full support, with every possible option, is more involved than certificates — https://github.com/denji/golang-tls#perfect-ssl-labs-score-with-go gives a good example of the level of extra configuration that must be set. I concede that going for full flexibility is not a trivial task. However, I have to seriously argue that even hard-coding support to TLSv1.2/TLSv1.3 only and not providing any options to users is a significant improvement over nothing.
"pointing to nginx/apache": even with basic support of TLS, directing users to put a proxy in front of a TLS-enabled tusd in case they need more granular control is consistent with the current stance on this topic.
Ultimately, I'm hoping for an incremental improvement over the current "nothing", and as noted above, I'm happy to do the heavy lifting.
The text was updated successfully, but these errors were encountered: