-
Notifications
You must be signed in to change notification settings - Fork 7.3k
Questions about recent changes in ciphers list #15445
Comments
re: not setting default.ciphers when the DEFAULT_CIPHERS is equal to v0.10.38 in order to preserve the default behavior in v0.10.38. Before this change, the default.ciphers in v0.10.38 and before was not being set. The thought was to make sure that setting the legacy ciphers back to that default would revert to the original v0.10.38 behavior completely. I can definitely add more documentation around this. Yes, |
Echoing the comment about not setting default ciphers on the client when we revert to v0.10.38. We wanted to make sure users could get back to the exact same behavior as in v0.10.38 and this seemed to be a reasonable way to allow that without overly complicating the command line options. |
@jasnell @mdawsonibm Thank you for the clarification! Not setting the default ciphers for If it does not make sense to use |
Possibly, but the current way that options are parsed vs. fallback on the environment variables makes that a bit tricky. You end up having to follow the bouncing ball a little bit. One item on my todo list is to slightly rework the way command line options are parsed in order to make this easier to manage. For now, I've documented the order of precedence on the options to make it clear exactly how they relate to one another. |
As for setting the default ciphers on tls.connect, I'm not sure. We address the security bug in v0.10.39 and beyond so we're covered there. The semantics of the |
Good points. I'm still not comfortable with not fixing it when using |
Btw, so it's clear, I will be squashing the multiple commits before
|
Regarding conflicting ciphers list environment variables/command line options, I created a gist that adds some checks and exits with an error message when conflicting options are used. Here's the output for most of the use cases I had in mind with these changes:
@jasnell What do you think? EDIT: The gist is a proof of concept, not necessarily something we'd like to commit exactly as is. |
Moving to milestone v0.10.40, as v0.10.39 was released today. |
We have made some changes to the way default ciphers list are handled recently, and I have two questions about the current implementation:
tls.connect
do not definedefault.ciphers
whenDEFAULT_CIPHERS === _crypto.getLegacyCiphers('v0.10.38')
? (As a side note, I think we want to use!==
on that line). That makes me think that we may want to add support for the--enable-legacy-cipher-list
and--cipher-list
options totest/external/ssl-options
to make sure that node behaves as we expect in this regard. We've had some interesting surprises in the past when running these tests.--cipher-list
and--enable-legacy-cipher-list
command line options, users are not warned about potential misuse. For instance, I can run node with:and think that
foo
will be the default ciphers list, but in fact it will be v0.10.38's default cipher list.Basically, it seems that using
--enable-legacy-cipher-list
always overwrites any usage of--cipher-list
. It doesn't seem to be mentioned in the documentation, and I think that if the two are mutually exclusive, node should exit with an error and not continue silently./cc @jasnell
The text was updated successfully, but these errors were encountered: