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ワークフローは、以下のステージで構成されています。
- クライアントが、構成済みSSLポート上のサーバーへのTCP接続を開きます。
- 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.yamlのclient_encryption_options
下で、require_client_auth
をtrueに設定します。このシナリオでは、SSLハンドシェイク中に要求があった際、自身の証明書を使用してサーバーに送信するようクライアントを構成する必要があります。