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

現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください
情報

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

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

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

次の理由により、Apigee Edge で暗号スイートの変更が必要になる場合があります。

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

暗号スイートは仮想ホストまたは Apigee Router のいずれかで構成できます。Apigee は、仮想ホストと Router の両方で OpenSSL 暗号文字列形式の暗号スイートのみを受け入れます。OpenSSL 暗号のマニュアルページでは、関連する仕様の SSL または TLS の暗号スイートと、それに対応する OpenSSL について説明しています。

次に例を示します。

仮想ホストまたは Apigee Router で TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 暗号スイートを構成する場合は、OpenSSL 暗号のマニュアルページで対応する 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. [管理] > [仮想ホスト] に移動します。
  3. この変更を行う特定の環境を選択します。
  4. 暗号スイートを構成する特定の仮想ホストを選択します。
  5. [Properties] で、[Ciphers] の値を、OpenSSL 暗号文字列をコロンで区切ったリストを指定して更新します。

    たとえば、暗号スイート TLS_DHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 のみを許可する場合は、次の表に示すように、OpenSSL 暗号のマニュアルページから、対応する 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. 次のように Get Virtual host API を使用して現在の仮想ホストの構成を取得します。

    Public Cloud ユーザー:

    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. properties の下の既存の仮想ホスト構成 JSON ペイロードに、適切な OpenSSL 暗号文字列を使用してプロパティ ssl_ciphers を追加します。

    たとえば、暗号スイート TLS_DHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 のみを許可する場合は、次の表に示すように、OpenSSL 暗号のマニュアルページから、対応する 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 構成を更新し、変更を反映します。

    Public Cloud ユーザー:

    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 構成を取得します。

    Public Cloud ユーザー:

    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 で暗号スイートを構成する方法について説明します。暗号スイートは、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 暗号のマニュアルページから、対応する 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 での暗号スイートの確認

このセクションでは、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. ルーターで新しい暗号スイートが正常に設定されると、上記のコマンドで新しい値が表示されます。

    暗号スイートが DHE-RSA-AES128-GCM-SHA256ECDHE-RSA-AES128-GCM-SHA256 に更新されたときの上記の search コマンドの結果の例を次に示します。

    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 に古い値が引き続き表示される場合は、Router での暗号スイートの構成で説明されているすべての手順を正しく実施していることを確認します。ステップを見逃した場合は、すべてのステップをもう一度正しくやり直します。
  4. それでも Router の暗号スイートを変更できない場合は、Apigee Edge サポートにお問い合わせください。