Шифрование между узлами защищает данные, передаваемые между узлами в кластере, с помощью протокола TLS. На этой странице рассказывается, как включить шифрование трафика между узлами Cassandra с помощью TLS в Edge для частного облака. Чтобы выполнить эти шаги, вы должны быть знакомы с деталями вашего кольца Cassandra.
Включить шифрование между узлами Cassandra
Чтобы включить шифрование трафика между узлами Cassandra, выполните следующие действия:
Создайте сертификаты сервера, следуя инструкциям в приложении, чтобы создать самозаверяющий ключ и сертификат.
В инструкциях ниже предполагается, что вы создали файлы
keystore.node0иtruststore.node0, а также пароли для хранилища ключей и хранилища доверенных сертификатов, как описано в приложении. Хранилище ключей и хранилище доверенных сертификатов необходимо создать на каждом узле до выполнения следующих шагов.- Добавьте в файл
/opt/apigee/customer/application/cassandra.propertiesследующие свойства: Если файла нет, создайте его.conf_cassandra_server_encryption_internode_encryption=all conf_cassandra_server_encryption_keystore=/opt/apigee/data/apigee-cassandra/keystore.node0 conf_cassandra_server_encryption_keystore_password=keypass conf_cassandra_server_encryption_truststore=/opt/apigee/data/apigee-cassandra/truststore.node0 conf_cassandra_server_encryption_truststore_password=trustpass # Optionally set the following to enable 2-way TLS or mutual TLS conf_cassandra_server_encryption_require_client_auth=true - Убедитесь, что файл
cassandra.propertiesпринадлежит пользователю apigee:chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
Выполните следующие действия на каждом узле Cassandra по очереди, чтобы изменения вступили в силу без простоя для пользователей:
- Остановите сервис Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Перезапустите сервис Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Чтобы узнать, запущен ли сервис шифрования TLS, проверьте системные журналы на наличие следующего сообщения:
Internode messaging enabled TLS protocols Internode messaging enabled cipher suites
Выполните ротацию сертификатов
Чтобы сменить сертификаты, выполните следующие действия:
- Добавьте сертификат для каждой уникальной сгенерированной пары ключей (см. Приложение) в хранилище доверенных сертификатов существующего узла Cassandra, чтобы в одном хранилище доверенных сертификатов существовали как старые, так и новые сертификаты:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
где
NEW_ALIAS– уникальная строка для идентификации записи,CERT– название добавляемого файла сертификата, аEXISTING_TRUSTSTORE– название существующего хранилища доверенных сертификатов на узле Cassandra. - Используйте утилиту копирования, например scp, чтобы распространить хранилище доверенных сертификатов на все узлы Cassandra в кластере, заменив существующее хранилище доверенных сертификатов, используемое каждым узлом.
- Выполните последовательный перезапуск кластера, чтобы загрузить новое хранилище доверенных сертификатов и установить доверие для новых ключей до того, как они будут установлены:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- На каждом узле Cassandra в кластере обновите указанные ниже свойства до новых значений хранилища ключей в файле cassandra.properties:
conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
где
NEW_KEYSTORE_PATH– путь к каталогу, в котором находится файл хранилища ключей, аNEW_KEYSTORE_PASSWORD– пароль хранилища ключей, заданный при создании сертификатов, как описано в Приложении. - Остановите сервис Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Перезапустите сервис Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Когда связь между всеми узлами будет установлена, перейдите к следующему узлу Cassandra. Примечание. Переходите к следующему узлу, только если связь между всеми узлами успешно установлена.
Приложение
В примере ниже показано, как подготовить сертификаты сервера, необходимые для шифрования между узлами. В командах из примера используются следующие параметры:
| Параметр | Описание |
|---|---|
node0 |
Уникальная строка, идентифицирующая узел. |
keystore.node0 |
Название хранилища ключей. В командах предполагается, что этот файл находится в текущем каталоге. |
keypass |
Пароль keypass должен быть одинаковым для хранилища ключей и ключа. |
dname |
IP-адрес node0 – 10.128.0.39. |
-validity |
Значение, заданное для этого флага, делает сгенерированную пару ключей действительной в течение 10 лет. |
- Перейдите в следующий каталог:
cd /opt/apigee/data/apigee-cassandra
- Чтобы создать файл с названием
keystore.node0в текущем каталоге, выполните следующую команду:keytool -genkey -keyalg RSA -alias node0 -validity 3650 \ -keystore keystore.node0 -storepass keypass \ -keypass keypass -dname "CN=10.128.0.39, OU=None, \ O=None, L=None, C=None"
Важно! Убедитесь, что пароль ключа совпадает с паролем хранилища ключей.
- Экспортируйте сертификат в отдельный файл:
keytool -export -alias node0 -file node0.cer \ -keystore keystore.node0
- Убедитесь, что файл доступен для чтения только пользователю apigee и никому другому:
$ chown apigee:apigee \ /opt/apigee/data/apigee-cassandra/keystore.node0 $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
- Импортируйте сгенерированный сертификат
node0.cerв хранилище доверенных сертификатов узла:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
После выполнения этой команды вам будет предложено задать пароль. Это пароль хранилища доверенных сертификатов, и он может отличаться от пароля хранилища ключей, который вы задали ранее. Если появится запрос на подтверждение доверия к сертификату, введите
yes. - С помощью openssl создайте PEM-файл сертификата без ключей. Обратите внимание, что
cqlshне работает с сертификатом в сгенерированном формате.$ keytool -importkeystore -srckeystore keystore.node0 \ -destkeystore node0.p12 -deststoretype PKCS12 -srcstorepass \ keypass -deststorepass keypass $ openssl pkcs12 -in node0.p12 -nokeys -out node0.cer.pem \ -passin pass:keypass $ openssl pkcs12 -in node0.p12 -nodes -nocerts -out node0.key.pem -passin pass:keypass
- Для шифрования между узлами скопируйте файл
node0.cerна каждый узел и импортируйте его в хранилище доверенных сертификатов каждого узла.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- Используйте
keytool -list, чтобы проверить наличие сертификатов в файлах хранилища ключей и хранилища доверенных сертификатов:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0