認証済み Origin Pull

Authenticated Origin Pullは、 IBM Cloud® Internet Services とオリジンサーバー間の安全な通信を確保するためのセキュリティ機能です。 相互TLS( mTLS )を使用して、 CIS とオリジン・サーバーの両方を認証し、信頼できる IBM Cloud® Internet Services からのリクエストだけがあなたのサーバーにアクセスできるようにします。 この設定により、オリジンサーバーが不正アクセスから保護され、ウェブアプリケーション全体のセキュリティが強化されます。

オリジンウェブサーバーは、認証されたオリジンプルを通して、ウェブ要求が IBM Cloud® Internet Services から来たことを検証します。 CIS は、 CIS とオリジンウェブサーバー間の接続を確立するときに、 CIS 証明書を提示するために、ほとんどのウェブサーバーでサポートされている機能である TLS クライアント証明書認証を使用します。 起点 Web サーバーでこの証明書を検証することにより、アクセスは CIS 接続に制限されます。

認証されたオリジンのプルは、ウェブ・アプリケーション・ファイアウォール(WAF)を利用する際に重要である。 オリジンウェブサーバーが認証されたオリジンのプルを実施した後、 CIS 以外のすべての HTTPS リクエストはオリジンに到達しないようにブロックされます。

以下のオプションのいずれかを使用して、認証済みオリジンのプルを構成できます:

  • CIS 証明書を使用したゾーンレベルの認証済みオリジンのプル
  • 顧客証明書を使用したゾーンレベルの認証済みオリジンプル
  • 顧客証明書を使用したホスト名ごとの認証オリジンプル

削除要求または置換要求が CIS API に送信されない限り、クライアント証明書は期限切れになっても CIS から削除されません。 しかし、オリジンが有効なクライアント証明書しか受け入れない場合、リクエストはオリジンでドロップされる。

認証済み Origin Pull は、SSL モードが Off (非セキュア) または Client-to-Edge の場合は機能しません。

CIS 証明書を使用したゾーン・レベルの認証済み Origin Pull

このオプションは、 CIS 提供された証明書を使用してゾーンレベルでリクエストを認証することで、オリジン サーバーからのセキュアなコンテンツアクセスを可能にする。

CIS は、次の CA を使用して、認証済み Origin Pull サービスの証明書に署名します。

証明書をダウンロードし、起点 Web サーバー上 (例えば /path/to/origin-pull-ca.pem) にファイルを保管します。

認証されたオリジンを有効にするには、ゾーンをグローバルにプルします:

  1. オリジンのWebサーバーに証明書をインストールし、すべての接続を認証する。
  2. CIS を エンド・ツー・エンドで柔軟に 構成する。
  3. オリジンWebサーバーがクライアント証明書を受け入れるように設定します。
  4. CIS CLIを 使用して、認証されたオリジンのプルを有効にします。

カスタム証明書によるゾーンレベルの認証済みオリジンプル

このオプションは、ゾーンレベルでの認証に顧客がアップロードした証明書を使用することで、オリジンサーバーからのセキュアなコンテンツアクセスを可能にする。

  1. OpenSSL, によって生成されたECC鍵を使用する場合は、まず証明書ファイルから -----BEGIN EC PARAMETERS-----...-----END EC PARAMETERS----- を削除する。

  2. CIS にアップロードする前に、証明書と鍵が以下の形式であることを確認してください:

    $ cat app_example_com.pem
    -----BEGIN CERTIFICATE-----
    MIIFJDCCBAygAwIBAgIQD0ifmj/Yi5Nz2gdUySbfzANBgkqhkiG9w0BAQsFADBN
    MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E
    ...
    SzSHfXp5lnu/3V08I72q1QNzOCgY1XeL4GKVcj4or6cT6tX6oJH7ePPmfrBfqI/O
    OeH8gMJ+FuwtXYEPa4hBf38M5eU5xWG7
    -----END CERTIFICATE-----
    
  3. 行の終わりをストリング \n に置き換えます。

    MYCERT="$(cat app_example_com.pem|perl -pe 's/\r?\n/\\n/'|sed -e 's/..$//')" $ MYKEY="$(cat app_example_com.key|perl -pe 's/\r?\n/\\n/'| sed -e's/..$//')"
    
    echo $MYCERT -----BEGIN CERTIFICATE-----\nMIIFJDCCBAygAwIBAgIQD0ifmj/Yi5NP/ 2gdUySbfzANBgkqhkiG9w0BAQsFADBN\nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E...SzSHfXp5lnu/ 3V08I72q1QNzOCgY1XeL4GKVcj4or6cT6tX6oJH7ePPmfrBfqI/O\nOeH8gMJ+FuwtXYEPa4hBf38M5eU5xWG7\n-----END CERTIFICATE-----\n
    
  4. ペイロードを作成します。

    $ request_body=$(< <(cat <<EOF { "certificate": "$MYCERT", "private_key": "$MYKEY" } } EOF ))

  5. CIS CLI からクライアント証明書と秘密鍵をアップロードします。

  6. CIS CLIから 認証されたオリジンのプルを有効にします。

顧客証明書を使用したホスト名ごとの認証オリジンプル

このオプションは、ホスト名ごとに顧客の証明書でリクエストを認証することで、オリジンサーバーからのセキュアなコンテンツアクセスを可能にする。

ホスト名ごとの認証済みオリジンプルを有効にすると、指定したホスト名へのすべてのプロキシされたトラフィックがオリジンWebサーバーで認証されます。 独自の公開鍵インフラストラクチャーからのクライアント証明書を使用して、CIS からの接続を認証できます。

CIS 内にクライアント証明書をアップロードするには、以下のようにします。

  1. OpenSSL, によって生成されたECC鍵を使用する場合は、まず証明書ファイルから -----BEGIN EC PARAMETERS-----...-----END EC PARAMETERS----- を削除する。

  2. 証明書を CIS にアップロードする前に、以下の形式であることを確認してください。

    $ cat app_example_com.pem
    -----BEGIN CERTIFICATE-----
    MIIFJDCCBAygAwIBAgIQD0ifmj/Yi5NP/2gdUySbfzANBgkqhkiG9w0BAQsFADBN
    MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E
    ...
    SzSHfXp5lnu/3V08I72q1QNzOCgY1XeL4GKVcj4or6cT6tX6oJH7ePPmfrBfqI/O
    OeH8gMJ+FuwtXYEPa4hBf38M5eU5xWG7
    -----END CERTIFICATE-----
    
  3. 行の終わりをストリング \n に置き換えます。

    MYCERT="$(cat app_example_com.pem|perl -pe 's/\r?\n/\\n/'|sed -e 's/..$//')" $ MYKEY="$(cat app_example_com.key|perl -pe 's/\r?\n/\\n/'|sed -e's/..$//')"
    
    echo $MYCERT -----BEGIN CERTIFICATE-----\nMIIFJDCCBAygAwIBAgIQD0ifmj/Yi5NP/2gdUySbfzANBgkqhkiG9w0BAQsFADBN\nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E...SzSHfXp5lnu/3V08I72q1QNzOCgY1XeL4GKVcj4or6cT6tX6oJH7ePPmfrBfqI/O\nOeH8gMJ+FuwtXYEPa4hBf38M5eU5xWG7\n-----END CERTIFICATE-----\n
    
  4. ペイロードを作成します。

    $ request_body=$(< <(cat <<EOF { "certificate": "$MYCERT", "private_key": "$MYKEY" } } EOF ))

  5. CIS CLI からクライアント証明書と秘密鍵をアップロードします。

  6. CIS CLIを 使用して、指定したホスト名で認証されたオリジンのプルを有効にします。 クライアント証明書を特定のホスト名にリンクする。

ダウン時間なしのクライアント証明書の置き換え

ホスト名の場合:

  1. 新しい証明書をアップロードする。
  2. 新しい証明書の ID とホスト名、および有効な値をリンクする。

グローバルの場合:

  1. 新しい証明書をアップロードする。
  2. 新しい証明書がアクティブ状態であることを確認する。
  3. 証明書がアクティブになったら、古い証明書を削除する。

異なるクライアント証明書 (ゾーン・レベルとホスト名レベル) を同時に適用する

  1. ゾーンレベルの認証済みオリジンのプル」 セクションの手順に従って、証明書をアップロードします。
  2. 顧客証明書を使用したホスト名ごとの認証済みオリジンのプル 」セクションの手順に従って、複数の証明書をアップロードします。

Apache および NGINX へのインストール

以下の手順を使用して、NGINX 起点 Web サーバーまたは Apache 起点 Web サーバー用に TLS 認証済み Origin Pull を構成します。

Apache のセットアップ

End-to-End flexibleを使用し、以下の手順でオリジンWebサーバーのSSL設定を更新します。

  1. 認証済みオリジンプル証明書 origin-pull-ca.pem )をダウンロードします。

  2. 証明書をオリジンのウェブ・サーバー上のファイル、例えば /path/to/origin-pull-ca.pem に保存します。

  3. 起点 Web サーバーの SSL 構成に以下の行を追加します。

    SSLVerifyClient require
    SSLVerifyDepth 1
    SSLCACertificateFile /path/to/origin-pull-ca.pem
    

NGINX のセットアップ

End-to-End flexibleを使用し、以下の手順でオリジンWebサーバーのSSL設定を更新します。

  1. 認証済みオリジンプル証明書 origin-pull-ca.pem )をダウンロードします。

  2. 証明書をオリジンのウェブ・サーバー上のファイル、例えば /etc/nginx/certs/cloudflare.crt に保存します。

  3. 起点 Web サーバーの SSL 構成に以下の行を追加します。

    ssl_client_certificate /etc/nginx/certs/cloudflare.crt;
    ssl_verify_client on;