[ 
https://issues.apache.org/jira/browse/CASSANDRA-17513?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17522399#comment-17522399
 ] 

Jyothsna Konisa commented on CASSANDRA-17513:
---------------------------------------------

[~maulin.vasavada] Thank you very much for your insights, We are trying to 
implement mTLS internode authentication and server_encryption_options is used 
for configuring SSL/TLS configurations for an internode authentication.

In an internode connection, the node that creates an inbound connection acts 
like a server and needs server certificate where as the node that creates 
outbound connection is like a client and it needs a client certificate. 
Currently we are setting same keystore for inbound and outbound connections but 
we should use a keystore with server certificate to inbound connection and a 
keystore with client certificate to an outbound connection.

There are two configurations for setting up encryption options in 
Cassandra.yaml file
 # client_encryption_options  (Between Cassandra cluster to clients)
 # server_encryption_options (for internode connections between Cassandra nodes)

*client_encryption_options* is used to set encryption configuration for 
communication between Cassandra cluster and clients. The server certificate 
(the identity of the server) is put inside *client_encryption_options.keystore* 
 For example if I am a user of a Cassandra cluster and I want to perform a 
CQLSH query using Java driver, during SSL handshake server 
certificate({*}client_encryption_options.keystore{*}) is presented to the 
client as server identity and *client_encryption_options.truststore* should 
have roots that trust client certificates.

*server_encryption_options* is used to set encryption configuration for 
communication between Cassandra nodes (internode authentication). Even in this 
case the server certificate of a node (node's identity) is put inside 
*server_encryption_options.keystore* and is presented to the other node. Also 
the {*}server{*}{*}_encryption_options.truststore{*} includes trusted roots of 
other node's certificates.

 

So, we cannot use client_encryption_options for configuring TLS/SSL options for 
internode authentication. Let me know if this addressed your concern.

> Add new property to pass keystore for outbound connections
> ----------------------------------------------------------
>
>                 Key: CASSANDRA-17513
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-17513
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Jyothsna Konisa
>            Assignee: Jyothsna Konisa
>            Priority: Normal
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Same keystore is being set for both Inbound and outbound connections but we 
> should use a keystore with server certificate for Inbound connections and a 
> keystore with client certificates for outbound connections. So we should add 
> a new property in Cassandra.yaml to pass outbound keystore and use it in 
> SSLContextFactory for creating outbound SSL context.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to