鑑別來源取回

Authenticated Origin Pull 是一項安全功能,可協助確保 IBM Cloud® Internet Services 與您的 origin 伺服器之間的安全通訊。 它使用相互 TLS ( mTLS ) 來驗證 CIS 和原始伺服器,這只允許來自受信任的 IBM Cloud® Internet Services 的要求存取您的伺服器。 此設定可保護您的原始伺服器免受未經授權的存取,並可增強網路應用程式的整體安全性。

起源網路伺服器透過已驗證的起源拉取,驗證網路請求來自 IBM Cloud® Internet Services。CIS 使用 TLS 用戶端證書驗證,這是大多數網路伺服器支援的功能,當它在 CIS 和起源網路伺服器之間建立連線時,會出示 CIS 證書。 透過在原點 Web 伺服器驗證此憑證,存取權會限制為 CIS 連線。

當您使用 Web 應用程式防火牆 (WAF) 時,經過驗證的來源拉取非常重要。 在您的 origin 網路伺服器強制執行驗證的 origin 拉取之後,CIS 以外的所有 HTTPS 請求都會被阻擋,無法到達您的 origin。

您可以使用下列其中一個選項,設定已驗證的來源拉取:

  • 使用 CIS 憑證來取回區域層次鑑別來源
  • 使用客戶憑證取回區域層次鑑別來源
  • 使用客戶憑證取回每個主機名稱的鑑別來源

用戶端憑證不會在到期時從 CIS 中刪除,除非將刪除或取代要求傳送至 CIS API。 不過,如果您的原點只接受有效的用戶端憑證,則會在原點捨棄要求。

「鑑別原點取回」在 SSL 模式關閉 (不安全)用戶端至邊緣中無法運作。

使用 CIS 憑證進行區域層次鑑別來源取回

此選項允許在區域層級使用 CIS 提供的憑證認證請求,從原始伺服器安全存取內容。

CIS 使用下列 CA 來簽署已鑑別原點取回服務的憑證:

下載憑證並將檔案儲存在原始 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. 檢查新憑證是否處於 Active 狀態。
  3. 證書啟用後,刪除舊的證書。

同步套用不同的用戶端憑證 (在區域及主機名稱層次)

  1. 按照 Zone-level authenticated origin pull(區域層級驗證的原點拉動 )部分的步驟上載憑證。
  2. 按照 使用客戶憑證的每主機名稱認證來源拉取 部分中的步驟上載多個憑證。

在 Apache 和 NGINX 上安裝

使用下列指示來配置 NGINX 或 Apache 原點 Web 伺服器的 TLS 鑑別原點取回。

設定 Apache

使用端對端彈性,並透過以下步驟更新原始 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

使用端對端彈性,並透過以下步驟更新原始 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;