ノード間(ノード間)暗号化は、クラスタ内のノード間を移動するデータを保護する 通信できます。このページでは、Edge で TLS を使用した Cassandra ノード間暗号化を有効にする方法について説明します。 プライベート クラウド以下の手順を行うには、Cassandra ノードの詳細をよく理解している必要があります。 呼び出します。
Cassandra のノード間暗号化を有効にする
Cassandra のノード間暗号化を有効にするには、
作成します。各ノードの公開証明書をすべてのノードに配布する必要があります。
その後、各ノードに証明書が格納され、
トラストストア内の node0.cer
、node1.cer
など。各ノードは
固有の秘密鍵が格納されています。
作成します。たとえば、node0
の場合、先頭に node0.pem
のみが含まれるようにします。
作成します。ノードごとに 1 つずつ暗号化を有効にする必要があります。
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 ノードで次の手順を 1 つずつ実行します。これにより、変更が有効になります。 ユーザーのダウンタイムを発生させることなく、
- 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_PATH
is the path to the directory where the keystore file is located andNEW_KEYSTORE_PASSWORD
is 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 |
node0 の IP アドレスを 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
」と入力します。 - opensl を使用して、鍵のない証明書の 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