Menu Close
Settings Close

Language and Page Formatting Options

第6章 TLS/SSL 暗号化の設定

Data Grid の公開鍵と秘密鍵が含まれるキーストアを設定することにより、SSL/TLS 暗号化を使用して Data Grid Server の接続をセキュアにすることができます。相互 TLS が必要な場合、クライアント証明書認証を設定することもできます。

6.1. Data Grid Server キーストアの設定

キーストアを Data Grid Server に追加し、その ID をクライアントに対して検証する SSL/TLS 証明書を提示します。セキュリティーレルムに TLS/SSL アイデンティティーが含まれる場合は、そのセキュリティーレルムを使用する Data Grid Server エンドポイントへの接続を暗号化します。

前提条件

  • Data Grid Server の証明書または証明書チェーンが含まれるキーストアを作成します。

Data Grid Server は、JKS、JCEKS、PKCS12/PFX、および PEM のキーストア形式をサポートします。Bouncy Castle ライブラリーが存在する場合は、BKS、BCFKS、および UBER もサポートされます。

重要

実稼働環境では、サーバー証明書は Root または Intermediate CA のいずれかの信頼される認証局によって署名される必要があります。

ヒント

以下のいずれかが含まれる場合には、PEM ファイルをキーストアとして使用できます。

  • PKCS#1 または PKCS#8 形式の秘密鍵。
  • 1 つ以上の証明書。

PEM ファイルキーストアを空のパスワード (password="") で設定する必要があります。

手順

  1. Data Grid Server 設定を開いて編集します。
  2. Data Grid Server の SSL/TLS アイデンティティーが含まれるキーストアを $RHDG_HOME/server/conf ディレクトリーに追加します。
  3. server-identities 定義を Data Grid Server セキュリティーレルムに追加します。
  4. path 属性でキーストアファイル名を指定します。
  5. キーストアパスワードと証明書エイリアスに keystore-password および alias 属性を指定します。
  6. 変更を設定に保存します。

次のステップ

クライアントが Data Grid Server の SSL/TLS ID を確認できるように、トラストストアを使用してクライアントを設定します。

キーストアの設定

XML

<server xmlns="urn:infinispan:server:13.0">
  <security>
    <security-realms>
      <security-realm name="default">
        <server-identities>
          <ssl>
            <!-- Adds a keystore that contains server certificates that provide SSL/TLS identities to clients. -->
            <keystore path="server.p12"
                      relative-to="infinispan.server.config.path"
                      password="secret"
                      alias="my-server"/>
          </ssl>
        </server-identities>
      </security-realm>
    </security-realms>
  </security>
</server>

JSON

{
  "server": {
    "security": {
      "security-realms": [{
        "name": "default",
        "server-identities": {
          "ssl": {
            "keystore": {
              "alias": "my-server",
              "path": "server.p12",
              "password": "secret"
            }
          }
        }
      }]
    }
  }
}

YAML

server:
  security:
    securityRealms:
      - name: "default"
        serverIdentities:
          ssl:
            keystore:
              alias: "my-server"
              path: "server.p12"
              password: "secret"

6.1.1. Data Grid Server キーストアの生成

起動時にキーストアを自動的に生成するように Data Grid Server を設定します。

重要

自動生成されたキーストア:

  • 実稼働環境では使用しないでください。
  • 必要に応じて生成されます。たとえば、クライアントから最初の接続を取得する際などに生成されます。
  • Hot Rod クライアントで直接使用可能な証明書が含まれます。

手順

  1. Data Grid Server 設定を開いて編集します。
  2. サーバー設定に keystore 要素の generate-self-signed-certificate-host 属性を含めます。
  3. サーバー証明書のホスト名を値として指定します。
  4. 変更を設定に保存します。
生成されたキーストアの設定

XML

<server xmlns="urn:infinispan:server:13.0">
  <security>
    <security-realms>
      <security-realm name="GeneratedKeystore">
        <server-identities>
          <ssl>
            <!-- Generates a keystore that includes a self-signed certificate with the specified hostname. -->
            <keystore path="server.p12"
                      relative-to="infinispan.server.config.path"
                      password="secret"
                      alias="server"
                      generate-self-signed-certificate-host="localhost"/>
          </ssl>
        </server-identities>
      </security-realm>
    </security-realms>
  </security>
</server>

JSON

{
  "server": {
    "security": {
      "security-realms": [{
        "name": "GeneratedKeystore",
        "server-identities": {
          "ssl": {
            "keystore": {
              "alias": "server",
              "generate-self-signed-certificate-host": "localhost",
              "path": "server.p12",
              "password": "secret"
            }
          }
        }
      }]
    }
  }
}

YAML

server:
  security:
    securityRealms:
      - name: "GeneratedKeystore"
        serverIdentities:
          ssl:
            keystore:
              alias: "server"
              generateSelfSignedCertificateHost: "localhost"
              path: "server.p12"
              password: "secret"

6.1.2. TLS バージョンおよび暗号スイートの設定

SSL/TLS 暗号化を使用してデプロイメントのセキュリティーを保護する場合は、特定のバージョンの TLS プロトコルと、プロトコル内の特定の暗号スイートを使用するように Data Grid Server を設定できます。

手順

  1. Data Grid Server 設定を開いて編集します。
  2. engine 要素を Data Grid Server の SSL 設定に追加します。
  3. enabled-protocols 属性を持つ 1 つ以上の TLS バージョンを使用するように Data Grid を設定します。

    Data Grid Server は、デフォルトで TLS バージョン 1.2 および 1.3 をサポートします。該当する場合は、クライアント接続のセキュリティープロトコルを制限するために、TLSv1.3 のみを設定できます。Data Grid は、TLSv1.1 の有効化を推奨していません。これは、サポートが制限された古いプロトコルで、セキュリティー保護が弱いからです。1.1 より古いバージョンの TLS を有効にすることはできません。

    警告

    Data Grid Server の SSL engine 設定を変更する場合は、enabled-protocols 属性を使用して TLS バージョンを明示的に設定する必要があります。enabled-protocols 属性を省略すると、すべての TLS バージョンが許可されます。

    <engine enabled-protocols="TLSv1.3 TLSv1.2" />
  4. enabled-ciphersuites 属性 (TLSv1.2 以下) および enabled-ciphersuites-tls13 属性 (TLSv1.3) を使用して、1 つまたは複数の暗号スイートを使用するように Data Grid を設定します。

    使用する予定のプロトコル機能 (例: HTTP/2 ALPN) をサポートする暗号スイートを設定していることを確認する必要があります。

  5. 変更を設定に保存します。
SSL エンジンの設定

XML

<server xmlns="urn:infinispan:server:13.0">
  <security>
    <security-realms>
      <security-realm name="default">
        <server-identities>
          <ssl>
            <keystore path="server.p12"
                      relative-to="infinispan.server.config.path"
                      password="secret"
                      alias="server"/>
            <!-- Configures Data Grid Server to use specific TLS versions and cipher suites. -->
            <engine enabled-protocols="TLSv1.3 TLSv1.2"
                    enabled-ciphersuites="TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
                    enabled-ciphersuites-tls13="TLS_AES_256_GCM_SHA384"/>
          </ssl>
        </server-identities>
      </security-realm>
    </security-realms>
  </security>
</server>

JSON

{
  "server": {
    "security": {
      "security-realms": [{
        "name": "default",
        "server-identities": {
          "ssl": {
            "keystore": {
              "alias": "server",
              "path": "server.p12",
              "password": "secret"
            },
            "engine": {
              "enabled-protocols": ["TLSv1.3"],
              "enabled-ciphersuites": "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256",
              "enabled-ciphersuites-tls13": "TLS_AES_256_GCM_SHA384"
            }
          }
        }
      }]
    }
  }
}

YAML

server:
  security:
    securityRealms:
      - name: "default"
        serverIdentities:
          ssl:
            keystore:
              alias: "server"
              path: "server.p12"
              password: "secret"
            engine:
              enabledProtocols:
                - "TLSv1.3"
              enabledCiphersuites: "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"
              enabledCiphersuitesTls13: "TLS_AES_256_GCM_SHA384"