Шифрование между узлами защищает данные, передаваемые между узлами в кластере, с помощью протокола TLS. На этой странице рассказывается, как включить шифрование трафика между узлами Cassandra с помощью TLS в Edge для частного облака. Чтобы выполнить эти действия, вам нужно знать подробности о кольце Cassandra.
Как включить шифрование трафика между узлами Cassandra
Чтобы включить шифрование трафика между узлами Cassandra, выполните следующие действия:
Создайте сертификаты сервера, следуя инструкциям в Приложении, чтобы создать самоподписанный ключ и сертификат.
В приведенных ниже инструкциях предполагается, что вы создали
keystore.node0иtruststore.node0, а также пароли для хранилища ключей и хранилища доверенных сертификатов, как описано в Приложении. Хранилище ключей и хранилище доверенных сертификатов необходимо создать на каждом узле до выполнения следующих шагов.- Добавьте в файл
/opt/apigee/customer/application/cassandra.propertiesследующие свойства: Если файла нет, создайте его.conf_cassandra_internode_encryption=all conf_cassandra_keystore=/opt/apigee/data/apigee-cassandra/keystore.node0 conf_cassandra_keystore_password=keypass conf_cassandra_truststore=/opt/apigee/data/apigee-cassandra/truststore.node0 conf_cassandra_truststore_password=trustpass # Optionally set the following to enable 2-way TLS or mutual TLS # conf_cassandra_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, проверьте системные журналы на наличие следующего сообщения:
Starting Encrypted Messaging Service on TLS port
Выполните ротацию сертификатов
Чтобы сменить сертификаты, выполните следующие действия:
- Добавьте сертификат для каждой уникальной сгенерированной пары ключей (см. Приложение) в хранилище доверенных сертификатов существующего узла 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_keystore=NEW_KEYSTORE_PATH conf_cassandra_keystore_password=NEW_KEYSTORE_PASSOWRD
where
NEW_KEYSTORE_PATHis the path to the directory where the keystore file is located andNEW_KEYSTORE_PASSWORDis the keystore password set when the certificates were created, as explained in the Appendix. - Stop the Cassandra service:
/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 |
Пароль должен быть одинаковым для хранилища ключей и ключа. |
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