[ https://issues.apache.org/jira/browse/CASSANDRA-15262?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17096003#comment-17096003 ]
Ekaterina Dimitrova edited comment on CASSANDRA-15262 at 4/30/20, 1:54 AM: --------------------------------------------------------------------------- [~jolynch], I am not sure whether you had the opportunity to look at the failures we talked about last night. Update on my end: Currently the following two D-tests fail: _ _native_transport_ssl_test.py::TestNativeTransportSSL::test_connect_to_ssl_ _ _TestNodeToNodeSSLEncryption::test_optional_outbound_tls_ - native_transport_ssl_test.py::TestNativeTransportSSL::test_connect_to_ssl fails. - _client_encryption_options:optional_ should be set to_ False_ in _native_transport_ssl_test.py::TestNativeTransportSSL::test_connect_to_ssl._ - _TestNodeToNodeSSLEncryption::test_optional_outbound_tls_ fails at the point when we restart node1 with encryption being enabled and plaintext port shutdown. The inbound connection node2 is refused because of _InvalidLegacyProtocolMagic: Read 369295616, Expected -900387334_. Making server_encryption_options:enabled private is not working. I double-checked the changes with the private variable and they look correct. This means that there is something more non-trivial? (I am new to this part of the codebase, probably you might know something more to be considered than the public to private change) I don't see an issue with the change of optional to default value of True in cassandra.yaml but I suggest if we want to setup _server_encryption_options:enabled_ to _True_ as an immutable value, just to leave it commented and if the user tries to change it to false - to reject the change with a warning. We can mark it as Deprecated in the DatabaseDescriptor as other parameters. I tried simply to comment server_encryption_options:enabled in cassandra.yaml and the tests are passing. [~jolynch], considering you mentioned there is already a ticket for improvement to land in 4.1 which suggests to split _ServerEncryptionOptions_ class from _EncryptionOptions_ class, I would personally leave this patch in the suggested way with minimum changes applied to the code as we are in code freeze. WDYT? was (Author: e.dimitrova): [~jolynch], I am not sure whether you had the opportunity to look at the failures we talked about last night. Update on my end: Currently the following two D-tests fail: _ _native_transport_ssl_test.py::TestNativeTransportSSL::test_connect_to_ssl_ _ _TestNodeToNodeSSLEncryption::test_optional_outbound_tls_ - native_transport_ssl_test.py::TestNativeTransportSSL::test_connect_to_ssl fails. - _client_encryption_options:optional_ should be set to_ False_ in _native_transport_ssl_test.py::TestNativeTransportSSL::test_connect_to_ssl._ - _TestNodeToNodeSSLEncryption::test_optional_outbound_tls_ fails at the point when we restart node1 with encryption being enabled and plaintext port shutdown. The inbound connection node2 is refused because of _InvalidLegacyProtocolMagic: Read 369295616, Expected -900387334_. Making server_encryption_options:enabled private is not working. I double-checked the changes with the private variable and they look correct. This means that there is something more non-trivial? (I am new to this part of the codebase, probably you might know something more to be considered than the public to private change) I don't see an issue with the change of optional to default value of True in cassandra.yaml but I suggest if we want to setup server_encryption_options:enabled to True as a default value, just to leave it commented and if the user tries to change it to false - to reject the change with a warning. I tried simply to comment server_encryption_options:enabled in cassandra.yaml and the tests are passing. [~jolynch], considering you mentioned there is already a ticket for improvement to land in 4.1 which suggests to split ServerEncryptionOptions class from EncryptionOptions class, I would personally leave this patch in the suggested way with minimum changes applied to the code as we are in code freeze. WDYT? > server_encryption_options is not backwards compatible with 3.11 > --------------------------------------------------------------- > > Key: CASSANDRA-15262 > URL: https://issues.apache.org/jira/browse/CASSANDRA-15262 > Project: Cassandra > Issue Type: Bug > Components: Local/Config > Reporter: Joey Lynch > Assignee: Joey Lynch > Priority: Normal > Fix For: 4.0, 4.0-alpha > > > The current `server_encryption_options` configuration options are as follows: > {noformat} > server_encryption_options: > # set to true for allowing secure incoming connections > enabled: false > # If enabled and optional are both set to true, encrypted and unencrypted > connections are handled on the storage_port > optional: false > # if enabled, will open up an encrypted listening socket on > ssl_storage_port. Should be used > # during upgrade to 4.0; otherwise, set to false. > enable_legacy_ssl_storage_port: false > # on outbound connections, determine which type of peers to securely > connect to. 'enabled' must be set to true. > internode_encryption: none > keystore: conf/.keystore > keystore_password: cassandra > truststore: conf/.truststore > truststore_password: cassandra > # More advanced defaults below: > # protocol: TLS > # store_type: JKS > # cipher_suites: > [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA] > # require_client_auth: false > # require_endpoint_verification: false > {noformat} > A couple of issues here: > 1. optional defaults to false, which will break existing TLS configurations > for (from what I can tell) no particularly good reason > 2. The provided protocol and cipher suites are not good ideas (in particular > encouraging anyone to use CBC ciphers is a bad plan > I propose that before the 4.0 cut we fixup server_encryption_options and even > client_encryption_options : > # Change the default {{optional}} setting to true. As the new Netty code > intelligently decides to open a TLS connection or not this is the more > sensible default (saves operators a step while transitioning to TLS as well) > # Update the defaults to what netty actually defaults to -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org