[ 
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

Reply via email to