DSEドライバーでSSLを使用する

DSEドライバーは、ドライバーとサーバー間のSSL暗号化接続サポートしています。

cassandra.yaml

cassandra.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/cassandra/cassandra.yaml
tarボール・インストール installation_location/resources/cassandra/conf/cassandra.yaml

DSEドライバーは、ドライバーとサーバー間のSSL暗号化接続サポートしています。

DataStax Enterprise(DSE)は、暗号化されていないバイナリー・プロトコルを使用して、クライアントと通信するようにデフォルトで構成されています。DSEを使用して作業を開始するには便利ですが、通常、プロダクション環境、特に公共のインターネットを介してDSEノードと通信しているクライアントには適していません。

DSEにおけるSSLは、デプロイのセキュリティ要件に応じて、他の方法で構成することができます。いずれの構成においても、クライアントとサーバー間での通信が暗号化されます。

SSLにより、さまざまなレベルの本人確認が可能になります。

一般的なSSLワークフローは、以下のステージで構成されています。

  1. クライアントが、構成済みSSLポート上のサーバーへのTCP接続を開きます。
  2. SSLハンドシェイクはサーバーによって初期化され、公開鍵(または証明書)がクライアントに送信されます。
  3. クライアントは公開鍵証明書を使用して、暗号化されたセッション・キーを生成して、サーバーに送り返します。
  4. サーバーは秘密鍵を使用してメッセージを暗号化し、セッション・キーを取得します。
  5. その地点以降の通信はすべて、取得したセッション・キーを使用して暗号化されます。
1. SSL証明書の手順
C/C++ C# Java Node.js* PHP Python Ruby

本人確認なし

DSEサーバーと安全に通信しているDSEドライバーがあるクライアントは、サーバーの識別情報を検証する必要があります。大半のドライバーは、本人確認なしでサーバーに対するSSL接続の作成をサポートしていますが、プロダクション・デプロイメントには推奨されません。

安全なサーバーがWebサーバーに接する際、攻撃者がWebサーバーに成りすましている場合、ブラウザーはサーバーの識別情報を検証してから要求を送信します。トラブルメーカーに対する安全な通信は、ブラウザーとWebサーバー間において安全な通信を構成するという第一の目的が台無しになります。

サーバーを識別するクライアント

サーバーの識別情報を検証するにあたり、ドライバーは信頼できる認証機関(CA)のリストで構成されている必要があります。ドライバーが、SSLハンドシェイク中にサーバーのSSL証明書を受信すると、登録されているCAの1つによって証明書への署名が済んでいることを確認します。証明書が、登録されているCAによって署名されていなかった場合、クライアントは署名者が登録されているCAの1つによって署名されたものであるかどうかを確認します。信頼されているCAのクライアント・リストで、署名者が見つかるまで確認作業を継続します。

登録されているCAで署名者が見当たらない場合、本人確認は行われません。

クライアントを識別するサーバー

サーバーがクライアントの識別情報を検証するように構成するには、cassandra.yamlclient_encryption_options下で、require_client_authをtrueに設定します。このシナリオでは、SSLハンドシェイク中に要求があった際、自身の証明書を使用してサーバーに送信するようクライアントを構成する必要があります。