-
Notifications
You must be signed in to change notification settings - Fork 18k
crypto/tls: add DHE support #7758
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
Comments
Comment 1 by [email protected]: I'm also seeing errors in the CA chain for Get https://api.moip.com.br/: x509: certificate signed by unknown authority (possibly because of "x509: cannot verify signature: algorithm unimplemented" while trying to verify candidate authority certificate "COMODO RSA Certification Authority") It seems like everyone reissuing/updating certificates with the recent Heartbleed announcement are getting new certificates that aren't fully supported by crypto/tls. |
re #1: as replied on go-nuts this is a separate issue, crypto/sha512 is not imported by default (see also https://golang.org/cl/84700045). |
re #2: crypto/sha512 is now imported by default https://golang.org/cl/87670045 |
Is this being worked on? Or does anyone know how to work around this? |
@mstoykov, I would ask on the golang-nuts mailing list. But I don't know of anybody working on this. |
What's the status on this? |
DHE is slow, has compatibility issues over 1024 bits and is getting removed in browsers. No plans to support it. |
For sites and networks where nistp* curves are banned, it's either DHE or implementing one of the alternative curves or curve families. @mstoykov If you still need DHE support, drop me a line. I can point you to vendors that share (sell) customizations. |
@wmark Thanks, but as this was an internal (apache) server we just reconfigured it to support modern algorithms :) |
I have implemented the DHE ciphersuites (well, just the AES ones) in my fork of crypto/tls . It works well, and includes both client and server support for: (Why only RSA? Because if you have an EC server cert you probably will just use ECDH. Right?) I don't yet know how to go about getting it merged into mainline, but before I go through the effort to learn, is there any official interesting in including it? Some arguments in its favor:
Thanks. I'd really love the chance to have my code reviewed and to contribute this functionality. |
@mordyovits, this issue was already closed with a decision by @agl. |
@bradfitz @agl Can that be reconsidered? The code is written and working. The added ciphers default off. That means there currently exists zero Go code in world that when compiled would cause DHE to be used, since no code could have explicitly configured it. To my mind, that's a good argument: only future code that goes out of its way to ask for it will ever use it. The issues with DHE are compatibility and speed, not security (given acceptable key size). Therefore, I think default off DHE ciphersuites should be acceptable. |
Also, I've added PSK and DHE_PSK ciphersuites. I'd like to have those considered for inclusion, but I think that should be its own issue, because it required deeper surgery to remove assumptions about there always being a server cert. |
There's also an ongoing maintenance cost (refactoring, security) and binary size you didn't include in your list of counterarguments. |
Sure, but the point of crypto/tls is to implement TLS for people who use Go. People who want to use these ciphers in Go will have to go elsewhere. Not everything is Chrome or a Google webserver. Why not make Go usable for as many kinds of things as possible? Especially since the code is structured so that no one can expose it by accident. As for maintenance & binary size, it's a small patch. The diffstat for everything including DHE, PSK and DHE_PSK, but not _test is:
Thanks for considering it. |
You can find my fork with DHE ciphersuite support here: |
@mordyovits Reading your code for literary one minute I have spotted two flaws, in |
@wmark Thanks! I've emailed you to discuss it. |
by stalkr:
The text was updated successfully, but these errors were encountered: