Как настроить шифрование клиент-узел Cassandra с помощью драйвера Java DataStax?

Я настроил шифрование от узла к узлу в своем кластере Cassandra. Теперь я хочу настроить client-to-node. Согласно документация, это должно быть так же просто, как взять SSL-сертификат моего клиента и импортировать его в truststore каждого узла. У меня нет такого сертификата, но это не мой вопрос.

поскольку мой клиент использует драйвер Java DataStax, кажется, что для включения SSL со стороны клиента, когда я создаю Cluster I нужно использовать withSSL() метод для включения SSL. Хорошо, но что еще мне нужно сделать? Я не знаком с JSSE, поэтому я не знаю, что еще необходимо. Является ли связь SSL двусторонней, т. е. должен ли драйвер иметь доступ к сертификатам SSL каждого узла в кластере?

1 ответов


  1. создайте сертификаты [1].

  2. включить шифрование клиентского узла в cassandra.настройки yaml [2].

  3. добавить поддержку SSL для вашего клиента. Существует отличный блог datastax с образцом кода для настройки SSL-соединения в вашем клиенте [3].

  4. сертификат для вашего клиента. Из того, что я могу сказать, кажется, что вы должны иметь возможность использовать одно и то же хранилище ключей и trusture из [1] для java клиент для использования. В [4], я знаю, что вам нужен файл PEM стиля pcks12 для использования cqlsh.

кроме того, [4] предоставляет пример barebones клиента, подключающегося к кластеру cassandra через SSL. [5] хорошо читается для примеров создания сертификата для узлов кластера и клиента.

  1. [6] - лучший пример создания сертификатов, который я нашел.

N. B. Если вы хотите использовать шифрование Enterprise strength, вам нужно включить расширение криптографии Java. По юридическим причинам только относительно слабое шифрование поддерживается java, который поставляется. Кассандра и ваш клиент, вероятно, пожалуются, если вы попытаетесь использовать 256-битное шифрование без включения JCE. Сделайте это для клиент и сервер техника:

  1. скачать http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
  2. распаковать пакет
  3. скопируйте две банки политики в свой JAVA_HOME, перезаписав две банки, которые уже есть:

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

  4. перезагрузите Кассандру и клиент

[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