2014-09-12 21 views
7

Ho impostato la crittografia da nodo a nodo sul mio cluster Cassandra. Ora voglio configurare client-to-node. Secondo this documentation, dovrebbe essere facile come prendere il certificato SSL del mio client e importarlo nel truststore di ogni nodo. Non ho ancora un certificato, ma questa non è la mia domanda.Come impostare la crittografia da client a nodo Cassandra con il driver Java DataStax?

Dal momento che il mio cliente sta usando il driver DataStax Java, sembra che al fine di consentire SSL dal lato client, quando sto costruendo il Cluster dovrei usare il metodo withSSL() per abilitare SSL. Ok, ma cos'altro devo fare? Non ho familiarità con JSSE quindi non so cos'altro è necessario. La comunicazione SSL è bidirezionale, cioè il driver deve avere accesso ai certificati SSL di ciascun nodo nel cluster?

risposta

14
  1. Creare i certificati [1].

  2. Abilita la crittografia del nodo client nelle impostazioni di cassandra.yaml [2].

  3. Aggiungere il supporto SSL al client. C'è un eccellente blog datastax con codice di esempio per configurare la connessione SSL nel tuo client [3].

  4. Un certificato per il cliente. Da quello che posso dire, sembra che dovresti essere in grado di usare lo stesso keystore e trusture da [1] per il client java da utilizzare. Per [4], so che hai bisogno di un file PEM in stile pcks12 per usare cqlsh.

Inoltre, [4] fornisce un esempio barebone di un client che si connette a un cluster Cassandra su SSL. [5] è una lettura corretta per esempi di creazione di certificati per i nodi del cluster e il client.

  1. [6] è l'esempio migliore che ho trovato di creare i certificati.

N.B. Se si desidera utilizzare la crittografia aziendale, è necessario abilitare l'estensione di crittografia Java. Per ragioni legali, solo la crittografia relativamente debole è supportata dal java che viene spedito. Cassandra e il tuo cliente si lamenteranno probabilmente se si tenta di utilizzare la crittografia a 256 bit senza il JCE abilitato.Fate questo per sia il client e il server macchine:

  1. Scarica http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
  2. Decomprimere il pacchetto di
  3. Copiare i due vasetti di politica nel tuo JAVA_HOME, sovrascrivendo i due vasi che sono già lì:

    [[email protected] UnlimitedJCEPolicy]$ ls local_policy.jar README.txt US_export_policy.jar [[email protected] UnlimitedJCEPolicy]$ export JAVA_HOME="$(readlink -f "$(which java)" | sed "s:bin/.*$::")" [[email protected] UnlimitedJCEPolicy]$ echo $JAVA_HOME /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/ [[email protected] UnlimitedJCEPolicy]$ cp -v *.jar $JAVA_HOME/lib/security/

  4. Riavvia Cassandra e il cliente

[1] http://www.datastax.com/documentation/cassandra/2.0/cassandra/security/secureSSLCertificates_t.html

[2] http://www.datastax.com/documentation/cassandra/2.0/cassandra/security/secureSSLClientToNode_t.html

[3] http://www.datastax.com/dev/blog/accessing-secure-dse-clusters-with-cql-native-protocol

[4] https://github.com/PatrickCallaghan/datastax-ssl-example

[5] http://www.datastax.com/dev/blog/accessing-secure-dse-clusters-with-cql-native-protocol

[6] http://techdocs.acunu.com.s3.amazonaws.com/v5.0/admin/security/ssl.html

+0

Ho fatto # 1 e ho individuato le impostazioni in # 2 in modo da sapere cosa fare lì. Per quanto riguarda il n. 3: presumo che ciò significhi che la mia applicazione client deve avere il proprio keystore e truststore? Devono essere file diversi, simili a come ho configurato i nodi di Cassandra tramite le istruzioni in # 1? – 2rs2ts

+0

Io non * penso * così. Da quello che posso dire, dovresti essere in grado di riutilizzare uno dei key/trust store del nodo, poiché devono fidarsi l'uno dell'altro. Inoltre, non ho visto alcun esempio che includesse la generazione di un certificato client eccetto [5] sopra, il che è un po 'ambiguo. – CHK

+0

Non penso che vorrei riutilizzare i negozi dei nodi. Dato che dovrei fare in modo che ogni nodo si fidi di tutti gli altri, far girare un nuovo nodo significherebbe che dovrei aggiornare il truststore del cliente. O è necessario? Avevo chiesto in precedenza se l'autenticazione SSL fosse bidirezionale. – 2rs2ts