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
tls: add version-specific cipher suite options #3907
Conversation
d529467
to
1cd8fe1
Compare
Build SUCCESS |
1cd8fe1
to
b9d5f33
Compare
Build SUCCESS |
Should we allow |
I would not, the old syntax is for the legacy case, when converting it is
much clearer if they specify the versions explicitly.
Random thinking:
One thing that came to mind is the naming of the embedded options, it is
true that the boundary is with TLS1.3 but I guess we will have TLS1.4 and
TLS2.0 eventually and don't anticipate changes in the cipher-suite options
by then.
Also, the old one is not just for TLS1.2, but for anything between
SSL1..TLS1.2.
The difficulty lies in the names themselves, I somewhat like "legacy" for
the old cipher suites but what is the opposite of "legacy"?
hmmm... apache does this:
https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslciphersuite
It allows specifying "protocol" in the SSLCipherSuite directive, "SSL"
denoting everything between SSL1 .. TLS1.2 and "TLSv1.3" denoting the new
ciphersuites. If you omit "protocol" you would get SSL (for compatibility
with old config), if you use "DEFAULT" it would use the version that
openssl/apache combination defaults to (which might generate a
configuration failure when the switch in default happens)
nginx does not seem to support this yet and is using the ssl config file to
force cipher suites.
Maybe I would use ssl() for the legacy ciphersuites and tls13() for the new
ones. Eventually if the latter becomes a "span" of versions we could maybe
call that simply tls() or wait for Apache to name this.
I am not sure about the "DEFAULT" case, whether we need it at all. What
happens is once the flip to TLS1.3 as default happens, the ciphersuites
would become uncontrolled and TLS1.3 would start using its defaults. If we
added "DEFAULT", then the cipher suite could either denote the SSL ciphers
or the TLS1.3 ciphers. At the time of the switch we would generate a
startup failure, as we would try to supply an SSL cipher suite to a TLS
version or vice versa.
Maybe a good discussion for our upcoming jit.si meeting?
…On Wed, Feb 9, 2022 at 8:34 PM László Várady ***@***.***> wrote:
Should we allow cipher-suite("list:of:old:ciphers",
tls13("list:of:new:ciphers")) too (mixing the compat method with the new)?
—
Reply to this email directly, view it on GitHub
<#3907 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAFOK5THLPO3DZ3RR2SOL2TU2K6TLANCNFSM5N6ABFIQ>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
--
Bazsi
|
jit.si meeting results: We decided to use longer but accurate names, for example: If our assumption is correct, OpenSSL will not add a third separated method for new TLS versions, so in case of a theoretical TLS 1.4 or 2.0 version, we could just add an alias for |
b9d5f33
to
ef85f7c
Compare
Done. @bazsi Could you review this, please? |
Build SUCCESS |
@kira-syslogng do stresstest |
Kira-stress-test: Build SUCCESS |
Signed-off-by: László Várady <laszlo.varady@protonmail.com>
This will be used to report unsupported TLS options/methods, such as setting TLS 1.3 ciphers. Signed-off-by: László Várady <laszlo.varady@protonmail.com>
Signed-off-by: László Várady <laszlo.varady@protonmail.com>
…_once msg_warning_once() can be used to warn the user about a matter only once, but multiple keylog-file() options can be specified within a single config. Signed-off-by: László Várady <laszlo.varady@protonmail.com>
TLS <=1.2 and 1.3 ciphers should be set separately: https://www.openssl.org/docs/man3.0/man3/SSL_CTX_set_ciphersuites.html Signed-off-by: László Várady <laszlo.varady@protonmail.com>
OpenSSL uses a separate method for setting TLS 1.3 ciphers to be backward compatible with older versions/configurations. This commits adds version-specific cipher-suite() options, for example: > cipher-suite(tls12-and-older("list:of:ciphers"), tls13("list:of:ciphers")) tls12-and-older() can be used for specifying ciphers for TLS v1.2-and-older, tls13() can be used to specify TLS v1.3 ciphers. Note: For backward compatibility cipher-suite("list:of:ciphers") restricts only the TLSv1.2-and-older cipher suite. Signed-off-by: László Várady <laszlo.varady@protonmail.com>
libcurl uses a separate method for setting TLS 1.3 ciphers to be backward compatible with older versions/configurations. This commits adds version-specific cipher-suite() options, for example: > cipher-suite(tls12-and-older("list:of:ciphers"), tls13("list:of:ciphers")) tls12-and-older() can be used for specifying ciphers for TLS v1.2-and-older, tls13() can be used to specify TLS v1.3 ciphers. Note: For backward compatibility cipher-suite("list:of:ciphers") restricts only the TLSv1.2-and-older cipher suite. Signed-off-by: László Várady <laszlo.varady@protonmail.com>
This commits adds version-specific cipher-suite() options, for example: > cipher-suite(tls12-and-older("list:of:ciphers")) tls12-and-older() can be used for specifying ciphers for TLS v1.2-and-older. tls13() is currently not supported by paho-mqtt-c. Note: For backward compatibility cipher-suite("list:of:ciphers") restricts only the TLSv1.2-and-older cipher suite. Signed-off-by: László Várady <laszlo.varady@protonmail.com>
Signed-off-by: László Várady <laszlo.varady@protonmail.com>
ef85f7c
to
99e5e31
Compare
Build SUCCESS |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Checked the other tls()
implementations: riemann()
and amqp()
.
They do not have cipher suite setter options, so these changes are not applicable there.
Approve!
OpenSSL/libcurl use a separate method for setting TLS 1.3 ciphers to be backward
compatible with older versions/configurations.
This PR adds version-specific cipher-suite() options, for example:
tls12-and-older()
can be used for specifying ciphers for TLS v1.2-and-older,tls13()
can be used to specify TLS v1.3 ciphers.Note:
For backward compatibility cipher-suite("list:of:ciphers") restricts only the TLSv1.2-and-older cipher suite.
Fixes #3906