仮想ホストと Router で暗号スイートを構成する

Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントに移動します。
情報

このドキュメントでは、Apigee Edge の仮想ホストと Router で暗号スイートを構成する方法について説明します。

暗号スイートは、TLS を使用するネットワーク接続を保護するアルゴリズムのセットです。クライアントとサーバーは、メッセージの交換に使用する特定の暗号スイートについて合意する必要があります。クライアントとサーバーが暗号スイートに同意しない場合、リクエストは TLS handshake の失敗で失敗します。

Apigee では、クライアント アプリケーションと Router の間で暗号スイートを相互に合意する必要があります。

Apigee Edge で暗号スイートを変更する理由としては、次のようなものがあります。

  • クライアント アプリケーションと Apigee Router の間で暗号スイートの不一致を回避するには
  • セキュリティの脆弱性を修正するため、またはセキュリティを強化するために、より安全な暗号スイートを使用する

暗号スイートは、仮想ホストまたは Apigee Router で構成できます。Apigee は、仮想ホストと Router の両方で、OpenSSL 暗号文字列形式の暗号スイートのみを受け入れます。OpenSSL 暗号の man ページには、関連する仕様の SSL または TLS 暗号スイートと、それに対応する OpenSSL が記載されています。

例:

仮想ホストまたは Apigee Router で TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 暗号スイートを構成する場合は、OpenSSL 暗号の man ページから対応する OpenSSL 暗号文字列を特定する必要があります。暗号スイート TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 の OpenSSL 暗号文字列は ECDHE-RSA-AES128-GCM-SHA256. です。したがって、仮想ホストまたは Apigee Router で暗号スイートを構成するときに、OpenSSL 暗号文字列 ECDHE-RSA-AES128-GCM-SHA256 を使用する必要があります。

始める前に

仮想ホストで暗号スイートを構成する

このセクションでは、組織と環境に関連付けられた仮想ホストで暗号スイートを構成する方法について説明します。暗号スイートは、仮想ホストでサポートされている暗号スイートのリストを表すプロパティ ssl_ciphers を使用して、仮想ホストで構成できます。

Apigee がサポートする暗号スイートのリストについては、サポートされている暗号スイートをご覧ください。

仮想ホストは、次のいずれかの方法で構成できます。

  • Edge UI を使用する
  • Edge API の使用

Edge UI の使用

Edge UI を使用して仮想ホストを構成するには、次の操作を行います。

  1. Edge UI にログインします。
  2. [Admin] > [Virtual Hosts] に移動します。
  3. この変更を行う特定の環境を選択します。
  4. 暗号スイートを構成する特定の仮想ホストを選択します。
  5. [プロパティ] で、OpenSSL 暗号文字列のコロン区切りリストを使用して [暗号] の値を更新します。

    たとえば、TLS_DHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 の暗号スイートのみを許可する場合は、次の表に示すように、OpenSSL 暗号の man ページから対応する OpenSSL 暗号文字列を特定します。

    暗号スイート OpenSSL 暗号文字列
    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 DHE-RSA-AES128-GCM-SHA256
    TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256

    次の図に示すように、コロンで区切られた OpenSSL 暗号文字列を追加します。

    暗号の例

  6. 変更を保存します。

Edge API の使用

Edge API を使用して仮想ホストで暗号スイートを構成するには、次の操作を行います。

  1. 次のように、 仮想ホストの取得 API を使用して、現在の仮想ホスト構成を取得します。

    パブリック クラウド ユーザー:

    curl -v -X GET https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u {username}

    Private Cloud ユーザー:

    curl -v -X GET http://{management_server_IP}:8080/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u {username}
    {
      "hostAliases": [
        "api.myCompany,com"
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }
  2. 適切な OpenSSL 暗号文字列を使用して、既存の仮想ホスト構成 JSON ペイロードの propertiesssl_ciphers プロパティを追加します。

    たとえば、TLS_DHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 の暗号スイートのみを許可する場合は、次の表に示すように、OpenSSL 暗号の man ページから対応する OpenSSL 暗号文字列を特定します。

    暗号スイート OpenSSL 暗号文字列
    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 DHE-RSA-AES128-GCM-SHA256
    TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256

    次の properties コードブロックを追加します。

    更新された仮想ホスト構成の例:

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "ssl_ciphers",
            "value": "DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }
  3. 更新した仮想ホスト構成をファイルに保存します。たとえば、virtualhost-payload.json です。
  4. 次のように、 仮想ホストの更新 API を使用して、変更内容で virtualhost 構成を更新します。

    パブリック クラウド ユーザー:

    curl -v -X POST Content-Type: application/json
    https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u {username}

    Private Cloud ユーザー:

    curl -v -X POST Content-Type: application/json
    http://{management_server_IP}:8080/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u {username}

サポートされている暗号スイート

Apigee では、次の暗号スイートがサポートされています。

ECDHE-RSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-SHA384
ECDHE-RSA-AES256-SHA
DHE-RSA-AES256-GCM-SHA384
DHE-RSA-AES256-SHA256
DHE-RSA-AES256-SHA
DHE-RSA-CAMELLIA256-SHA
AES256-GCM-SHA384
AES256-SHA256  
AES256-SHA
CAMELLIA256-SHA
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-SHA256
ECDHE-RSA-AES128-SHA
DHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES128-SHA256
DHE-RSA-AES128-SHA
DHE-RSA-CAMELLIA128-SHA
AES128-GCM-SHA256
AES128-SHA256   
AES128-SHA 
CAMELLIA128-SHA

仮想ホストで暗号スイートを確認する

このセクションでは、Edge API を使用して、仮想ホストで暗号スイートが正常に変更されたことを確認する方法について説明します。

  1. 仮想ホストの取得 API を実行して、次のように virtualhost 構成を取得します。

    パブリック クラウド ユーザー:

    curl -v -X GET https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u {username}

    Private Cloud ユーザー:

    curl -v -X GET http://{management_server_IP}:8080/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u {username}
  2. プロパティ ssl_ciphers が新しい値に設定されていることを確認します。

    更新された仮想ホスト構成の例:

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "ssl_ciphers",
            "value": "DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }

    上記の例では、ssl_ciphers が新しい値で設定されていることに注意してください。

  3. ssl_ciphers の古い値が引き続き表示される場合は、仮想ホストで暗号スイートを構成するで説明されているすべての手順を正しく実行したことを確認します。手順を間違えた場合は、すべての手順をもう一度正しく繰り返します。
  4. 上記の手順を試しても仮想ホストの暗号スイートを更新または追加できない場合は、Apigee Edge サポートにお問い合わせください。

Router で暗号スイートを構成する

このセクションでは、ルーターで暗号スイートを構成する方法について説明します。暗号スイートは、コロン区切りの受け入れ可能な暗号スイートを表す Router プロパティ conf_load_balancing_load.balancing.driver.server.ssl.ciphers を介して構成できます。

Router で暗号スイートを構成する手順は次のとおりです。

  1. Router マシンで、次のファイルをエディタで開きます。存在しない場合は作成します。

    /opt/apigee/customer/application/router.properties

    たとえば、vi でファイルを開くには、次のように入力します。

    vi /opt/apigee/customer/application/router.properties
  2. properties ファイルに次の形式の行を追加します。colon_separated_cipher_suites の値は適宜置き換えてください。
    conf_load_balancing_load.balancing.driver.server.ssl.ciphers=colon_separated_cipher_suites

    たとえば、TLS_DHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 の暗号スイートのみを許可する場合は、次の表に示すように、OpenSSL ciphers manpage から対応する OpenSSL 暗号文字列を特定します。

    暗号スイート OpenSSL 暗号文字列
    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 DHE-RSA-AES128-GCM-SHA256
    TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256

    次の行を追加します。

    conf_load_balancing_load.balancing.driver.server.ssl.ciphers=DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
  3. 変更を保存します。
  4. このプロパティ ファイルの所有者が apigee ユーザーであることを確認します。
    chown apigee:apigee /opt/apigee/customer/application/router.properties
  5. 次のように Router を再起動します。
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. 複数の Router がある場合は、すべての Router で上記の手順を繰り返します。

ルーターで暗号スイートを確認する

このセクションでは、Router で暗号スイートが正常に変更されたことを確認する方法について説明します。

  1. Router で、/opt/apigee フォルダの Apigee 検索ユーティリティを使用してプロパティ conf_load_balancing_load.balancing.driver.server.ssl.ciphers を検索し、次のように新しい値が設定されているかどうかを確認します。
    /opt/apigee/apigee-service/bin/apigee-service edge-router configure -search conf_load_balancing_load.balancing.driver.server.ssl.ciphers
  2. 新しい暗号スイートがルーターに正常に設定されると、上記のコマンドで新しい値が表示されます。

    次の例は、上記の search コマンドの出力例です。この例では、暗号スイートが DHE-RSA-AES128-GCM-SHA256ECDHE-RSA-AES128-GCM-SHA256 に更新されています。

    Found key conf_load_balancing_load.balancing.driver.server.ssl.ciphers, with value, DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256, in /opt/apigee/customer//application/router.properties

    上記の出力例では、プロパティ conf_load_balancing_load.balancing.driver.server.ssl.ciphers が新しい暗号スイート値で設定されていることに注目してください。これは、暗号スイートが Router の OpenSSL 暗号文字列 DHE-RSA-AES128-GCM-SHA25ECDHE-RSA-AES128-GCM-SHA256 に正常に更新されたことを示します。

  3. 暗号スイート conf_load_balancing_load.balancing.driver.server.ssl.ciphers の古い値が引き続き表示される場合は、ルーターで暗号スイートを構成するで説明されているすべての手順を正しく実行したことを確認します。手順を間違えた場合は、すべての手順をもう一度正しく繰り返します。
  4. 上記の手順を試してもルーターの暗号スイートを変更できない場合は、Apigee Edge サポートにお問い合わせください。