API BaaS の TLS の構成

Edge for Private Cloud v4.18.01

TLS(Transport Layer Security、前身は SSL)は標準的なセキュリティ テクノロジー を使用して、API 環境全体で暗号化された安全なメッセージングを確保します。TLS は API BaaS ポータルと API BaaS スタックノード上にあります。

次の図は、単一の BaaS ポータルを持つ API BaaS の一般的なデプロイ図を示しています。 3 つの API BaaS スタックノードです。

デベロッパーはブラウザを使用してポータルにリクエストを送信します。デフォルトでは、このリクエストは HTTP ポート 9000 で接続します。

このデプロイには、ポータルノードとスタックノードの間のロードバランサが含まれます。この ポータルがロードバランサに HTTP リクエストを送信し、ロードバランサが いずれかのスタックノードにリクエストが転送されます。これは推奨されるデプロイです。 構築するためのベスト プラクティスです。

TLS 構成オプション

API BaaS の TLS を構成する場合、いくつかのオプションがあります。

  • ポータルと Stack ノードのロードバランサで TLS を構成する

    この構成では、デベロッパーは HTTPS プロトコルを使用して Portal と、 ブラウザで実行されているインスタンスは、HTTPS を使用して、 内部 IP アドレスを使用しますロードバランサは HTTP を使用して Stack ノードにアクセスします。
  • ポータル、ロードバランサ、スタックノードで TLS を構成する

    セキュリティを強化するため、TLS を使用して Stack ノードにアクセスするようにロードバランサを構成します。
  • ポータルと単一の Stack ノードで TLS を構成する

    テスト環境や開発環境などの小規模な環境では、 つまり、ロードバランサを含める必要はありません。この構成では Portal ノードと Stack ノードの両方で TLS を構成します。
  • ポータルのロードバランサで TLS を構成する

    上に示されていない選択肢の一つは、ポータル ノードの前にロードバランサを使用することです。その ロードバランサで TLS を構成できます。また、ロードバランサで TLS を ロードバランサとポータル間の接続を提供します。
で確認できます。

TLS ポートが開いていることを確認する

以下の手順では、デフォルトのポータル ポート 9000 とスタックノード 8080 で TLS を構成します。 このポートは必要に応じて変更できます。

使用するポートにかかわらず、ノード上でポートが開いていることを確認する必要があります。対象 たとえば、次のコマンドを使用してポート 8443 を開きます。

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose
<ph type="x-smartling-placeholder">

API BaaS スタックでの TLS の構成

デフォルトでは、API BaaS スタックに対して TLS は無効になっています。次に、HTTP 経由で BaaS API にアクセスします。 スタックノードの IP アドレスまたは DNS 名とポート 8080 を使用します。例:

http://stack_IP:8080

また、BaaS API への TLS アクセスを構成して、 フォーム:

https://stack_IP:8080

この例では、ポート 8080 を使用するように TLS アクセスを構成します。ただし、ポート 8080 は 別のポートを使用するようにスタックを構成できます。唯一の要件は、ファイアウォール 許可します。

スタックは、1 つのポートで 1 種類のリクエスト(HTTP または HTTPS)のみをサポートできます。したがって、 ポート 8080 で HTTPS アクセスを構成した場合、HTTP を使用してポート 8080 にアクセスすることはできません。もし HTTPS でポート 8443 を使用するようにスタックを設定すると、 8080。

スタックへの TLS アクセスを構成するには、次の操作を行います。

  1. TLS 証明書と秘密鍵を含むキーストア JKS ファイルを生成します。詳細情報 Edge On Edge 向けの TLS/SSL の構成 前提
    : キーストアと鍵のパスワードが同じであることを確認してください。
  2. キーストア JKS ファイルを Stack ノード上のディレクトリ(/opt/apigee/customer/application など)にコピーします。 ディレクトリには「apigee」からアクセスできる必要がありますできます。
  3. JKS ファイルの所有権を「apigee」に変更します。ユーザー:
    &gt;chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    ここで、keystore.jks は名前です。 確認します。
  4. /opt/apigee/customer/application/usergrid.properties を編集します。 次のプロパティを設定します。たとえば、JKS ファイルのパスや 保存されます。このファイルが存在しない場合は作成します。
    tomcat-server_scheme=https
    tomcat-server_secure=true
    tomcat-server_ssl.enabled=true
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
    tomcat-server_keystore.password=password
    tomcat-server_keyalias=keystore_alias
    tomcat-server_clientauth.enabled=false
    tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
    # デフォルトでは、TLS アクセスはポート 8080 を使用します。
    # このプロパティを使用して別のポートを指定する
    # tomcat-server_port=8080


    警告: パスワードの値はクリアテキストで指定する必要があります。 そのため、usergrid.properties を不正な操作から保護する必要があります。 できます。

    tomcat-server_keyalias を使用して、 プロパティを使用して、キーストアのエイリアスを指定します。キーエイリアスは、キーの作成時に設定します。 たとえば、keytool コマンドで -alias オプションを使用して設定できます。

    tomcat-server_ssl.protocols を使用します。 Stack でサポートされている TLS プロトコルを設定します。Java 8 でサポートされているプロトコルのリストについては、 http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename をご覧ください。
  5. Stack ノードを構成します。
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-usergrid 構成
  6. BaaS スタックを再起動します。
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-usergrid の再起動
  7. 次のコマンドを使用して、スタックノードで次の cURL コマンドを実行して TLS が機能していることを確認します。 HTTPS:
    &gt;curl -k https://localhost:8080/status -v

    TLS が正しく構成されている場合は、ステータス情報を含むレスポンスが表示されます。

    8080 以外のポート経由で TLS アクセスを構成した場合は、上記のコマンドを変更して ポートを選択します。
  8. すべての Stack ノードでこの手順を繰り返します。
  9. スタックノードの前面にロードバランサがある場合は、ロードバランサを構成する 使用して HTTPS 経由でスタックノードにリクエストを送信できます。詳しくは、 ロードバランサをご確認ください。

    ポータルがスタックに直接リクエストを送信する場合は、ポータルを次のように構成します。 次のセクションで説明するように、HTTPS 経由でスタックにアクセスします。
  10. 以下の「スタックまたはポータルで TLS の API BaaS スタックノードを構成する」の手順を使用します。 ユーザーの生成時にスタックノードに正しい TLS URL が設定され、 できます。

構成 TLS 経由でスタックにアクセスするため。

ブラウザで実行される BaaS ポータルは、BaaS スタックに対して API 呼び出しを行うことによって機能します。もし TLS を使用するように BaaS スタックを構成する場合、それらの呼び出しを行うようにポータルも構成する必要があります 通信できます。

通常、API BaaS インストールは、次のいずれかで構成されます。

  • ポータルノードとスタックノードの間でロードバランサを使用する

    HTTPS 経由でスタックノードにリクエストを行うようにロードバランサを構成する。詳しくは、 ロードバランサのドキュメントをご覧ください。

    この構成では、ポータルは、HTTP または HTTPS でロードバランサにアクセスできます。 ロードバランサの構成方法を指定します。ロードバランサが TLS を使用している場合は、次の手順で操作します。 HTTPS のロードバランサにリクエストを行うようにポータルを構成します。
  • ポータルからスタックに対して直接リクエストを行う

    以下で説明するように、HTTPS 経由でスタックにアクセスできるようにポータルを構成します。

HTTPS 経由で API 呼び出しを行うように API BaaS ポータルを構成するには、次の手順を使用します。

  1. 上記のように BaaS スタック、またはロードバランサで TLS アクセスを構成します。 ロードバランサのドキュメントに従ってノードをスタックします。
  2. /opt/apigee/customer/application/portal.properties を編集します。 次のプロパティを設定します。このファイルが存在しない場合は作成します。
    baas.portal.config.overrideUrl=https://stackIP:port

    このプロパティの値として、API スタックノードの IP アドレスまたは DNS 名とポートを指定します。 または、ロードバランサの前にロードバランサがある場合は、 API BaaS スタックノードです。
  3. ポータルノードを構成します。
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-portal config
  4. 次のコマンドを使用してポータルを再起動します。
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-portal 再起動
  5. スタックへの TLS アクセスを構成するときに自己署名証明書を使用した場合 上記の方法では、ブラウザがポータルからスタックへのリクエストを許可していない場合があります。次が表示される場合: スタックへの HTTPS アクセスが許可されていないことを示すエラーがブラウザに表示された場合は、以下をリクエストします。 ブラウザで URL を開き、次のアクセスを許可するセキュリティ例外を追加します。
    https://stackIP:port/status

    API スタックノードまたはロードバランサの IP アドレスまたは DNS 名とポートを指定します。

API BaaS ポータルでの TLS の構成

デフォルトでは、ユーザーがポータルにアクセスするには、ポート 9000 経由で暗号化されていない HTTP リクエストを送信し、 ポータル サーバー。HTTPS を使用して、ポータルとの間で送受信されるデータを暗号化するようにポータルを構成できます。 登録できます

デフォルトでは、ポータルの IP アドレスまたは DNS 名を使用して HTTP 経由でポータルにアクセスします。 ポート 9000 に接続されます例:

http://portal_IP:9000

また、ポータルへの TLS アクセスを構成して、 フォーム:

https://portal_IP:9443

この例では、ポート 9443 を使用するように TLS アクセスを構成します。ただし、ポート 9443 は必須ではありません。 - 別のポートを使用するようにポータルを構成できます。

ポータルは 1 つのポートで 1 種類のリクエスト(HTTP または HTTPS)のみをサポートできます。したがって、 ポート 9000 で HTTPS アクセスを構成した場合、HTTP を使用してポート 9000 にアクセスすることはできません。もし HTTPS でポート 9443 を使用するようにポータルを設定すると、そのポータルは 9,000。

ポータルに TLS を構成するには:

  1. PEM 形式で鍵ファイルと証明書ファイルを作成します。
    : 鍵または証明書にパスワードやパスフレーズが含まれていないことを確認してください。
  2. ポータルノードのディレクトリ(/opt/apigee/customer/application など)に PEM ファイルをコピーします。 ディレクトリには「apigee」からアクセスできる必要がありますできます。
  3. PEM ファイルの所有権を「apigee」に変更するユーザー:
    &gt;chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. /opt/apigee/customer/application/portal.properties を編集します。 次のプロパティを設定します。このファイルが存在しない場合は作成します。
    baas.portal.ssl=on
    baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
    baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem
    baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
    # デフォルトでは、TLS アクセスはポート 9000 を使用します。
    # このプロパティを使用して別のポートを指定する
    # baas.portal.listen=9000


    baas.portal.ssl.protocols を使用する ポータルでサポートされる TLS プロトコルを設定します。サポートされているプロトコルの一覧については、 Nginx で定義されている SSL プロトコル名のリスト: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols
  5. ポータルノードを構成します。
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-portal config
  6. ポータルを再起動します。
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-portal 再起動
  7. 以下の「スタックまたはポータルで TLS の API BaaS スタックノードを構成する」の手順を使用します。 して、Stack ノードにポータルの正しい TLS URL を設定します。

ネットワーク上で TLS 用の API BaaS ノードを構成する スタックまたはポータル

スタックノードまたはポータルノードの前にロードバランサを配置する場合、または TLS を有効にする場合 作成するには、正しい URL でノードを構成してから スタックとポータルにアクセスできます。たとえば、スタックノードは、次の場合にこの情報を必要とします。

  • BaaS API リクエストのレスポンスに URL を含める。
  • パスワードのリセット時や、他のメッセージの送信時などに、メール テンプレートにリンクを追加する 通知を受け取れます。
  • 特定のポータル ページにユーザーをリダイレクトする。

スタックノードの前面でロードバランサを使用する場合や、スタックノードで TLS を構成する場合は、 /opt/apigee/customer/application/usergrid.properties で次のプロパティを設定します。

usergrid-deployment_usergrid.api.url.base=http://localhost:8080

http://localhost:8080 は読み込みの URL に置き換えます。 内部 IP アドレスを使用しますTLS を使用するようにロードバランサが構成されている場合は、HTTPS プロトコルを使用します。自分だけ 標準以外のポート、つまりポートまたはポート ポート以外のポートを HTTP の場合は 80、HTTPS の場合はポート 443 です。

また、次の場合は、/opt/apigee/customer/application/portal.properties で次のプロパティを設定する必要があります。 Stack ノードの前にロードバランサを使用します

baas.portal.config.overrideUrl=http://localhost:8080

http://localhost:8080 は 使用します。

ポータル ノードの前面でロードバランサを使用する場合、または Stack ノードで TLS を構成する場合は、 usergrid.properties の以下のプロパティを設定します。

usergrid-deployment_portal.url=http://localhost:9000

http://localhost:9000 は ロードバランサを介してアクセスしますTLS を使用するようにロードバランサが構成されている場合は、HTTPS プロトコルを使用します。マイページ 非標準ポート、つまりポートまたはポート ポート以外のポートを ポート 80(HTTP 用)とポート 443(HTTPS 用)を 使用します

usergrid.properties を編集したら、次の手順を行います。

  1. Stack ノードを構成します。
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-usergrid 構成
  2. BaaS スタックを再起動します。
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-usergrid の再起動
  3. portal.properties を変更した場合は、 ポータルノード:??
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-portal config
  4. BaaS ポータルを再起動します。
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-portal 再起動