Stefan Podkowinski created CASSANDRA-13314:
----------------------------------------------

             Summary: Config file based SSL settings
                 Key: CASSANDRA-13314
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13314
             Project: Cassandra
          Issue Type: Improvement
          Components: Configuration, Tools
            Reporter: Stefan Podkowinski
            Assignee: Stefan Podkowinski
            Priority: Minor
             Fix For: 4.x


As follow up of CASSANDRA-13259, I'd like to continue discussing how we can 
make SSL less awkward to use and further move SSL related code out of our code 
base. Currently we construct our own SSLContext in SSLFactory based on 
EncryptionOptions passed by the MessagingService or any individual tool where 
we need to offer SSL support. This leads to a situation where the user has not 
only to learn how to enable the correct settings in cassandra.yaml, but these 
settings must also be reflected in each tool's own command line options. As 
argued in CASSANDRA-13259, these settings could be done as well by setting the 
appropriate system and security properties 
([overview|http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#InstallationAndCustomization])
 and we should just point the user to the right files to do that (jvm.options 
and java.security) and make sure that daemon and all affected tools will source 
them. 

Since giving this a quick try on my WIP branch, I've noticed the following 
issues in doing so:
* Keystore passwords will show up in process list 
(-Djavax.net.ssl.keyStorePassword=..). We should keep the password setting in 
cassandra.yaml and clis and do a System.setProperty() if they have been 
provided. 
* It's only possible to configure settings for a single default 
key-/truststore. Since we currently allow configuring both 
ServerEncryptionOptions and ClientEncryptionOptions with different settings, 
we'd have to make this a breaking change. I don't really see why you would want 
to use different stores for node-to-node and node-to-client, but that wouldn't 
be possible anymore. 
* This would probably only make sense if we really remove the affected CLI 
options, or we'll end up with just another way to configure this stuff. This 
will break existing scripts and obsolete existing documentation.

Any opinions?



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to