更新為多種 IKE 和 IPsec 演算法

VPN for VPC 支援為 IKE 和 IPsec 政策設定多種演算法。 使用多種演算法可以提高相容性、彈性和安全性。

請依照以下說明,將已廢棄的單一演算法屬性遷移至多個演算法屬性。

開始之前

在更新您的 VPN 政策之前,請先檢視以下資訊。

已停用的奇異演算法屬性

自 2026 年 5 月 29 日起,VPN IKE 和 IPsec 單一演算法屬性已被廢棄。 已設定為單一屬性的現有 VPN 連線將維持原有設定,繼續運作。 不過,建議盡快更新為基於陣列的演算法屬性。

IKE 政策的奇異與陣列演算法特性
IKE 單數屬性 (已停用) IKE 多物業(建議)
authentication_algorithm authentication_algorithms
encryption_algorithm encryption_algorithms
dh_group dh_groups
IPsec 政策的奇異與陣列演算法屬性
IPsec 單數屬性(已停用) IPsec 多重屬性(建議)
authentication_algorithm authentication_algorithms
encryption_algorithm encryption_algorithms
pfs pfs_groups

當您的 VPN 環境需要與支援不同加密演算法的對等端保持相容性,或是您希望在維持向後相容性的同時優先採用更強的加密機制時,請使用多種演算法。

重要考量

  • 若 VPN 連線使用包含已廢棄之單一演算法屬性的自訂 IKE 或 IPsec 政策,可能會發生協商失敗或互通性問題。
  • 僅能透過基於陣列的演算法屬性來建立新的 IKE 和 IPsec 政策。
  • 更新現有 IKE 或 IPsec 政策時,可能會在重新建立連線時暫時中斷 VPN 通道。
  • 如果您的災難復原程序、自動化、指令碼、API 整合或 CLI 工作流程引用了已停用的單元屬性,請相應更新。
  • 檢閱您目前的 IKE 和 IPsec 政策,以辨識使用中的演算法。
  • 確認對等 VPN 閘道器支援您打算在 IBM Cloud 上設定的演算法。
  • 更新 IBM Cloud VPN 閘道之前,在對等 VPN 閘道上設定 IKE 和 IPsec 協商的匹配演算法。
  • 在維護視窗期間規劃政策更新,以盡量減少服務中斷。

瞭解 API 中的更新行為

API 會自動同步單數和基於陣列的演算法屬性。 在更新您的政策之前,請檢閱下列行為和限制。

IKE 版本相容性
基於陣列的演算法屬性僅支援 IKEv2。 若您使用 IKEv1,則必須透過單數屬性,為每個類別設定單一演算法。
  • 使用 IKEv2 與基於陣列的屬性:
{
   "ike_version": 2,
   "authentication_algorithms": ["sha512", "sha256"],
   "encryption_algorithms": ["aes256", "aes128"]
}
  • 在屬性為單數時,請使用 IKEv1:
{
   "ike_version": 1,
   "authentication_algorithm": "sha256",
   "encryption_algorithm": "aes128"
}

IKEv1 每個類別只支援一種演算法。 使用 IKEv1 的 VPN 連線不支援陣列式 IKE 或 IPsec 演算法屬性。 盡可能使用 IKEv2。

自動同步
當您更新基於陣列的屬性 (authentication_algorithms, encryption_algorithms, dh_groups, pfs_groups) 時,對應的單數屬性 (authentication_algorithm, encryption_algorithm, dh_group, pfs) 也會自動更新。 同樣地,更新單一的屬性會自動更新相關的陣列型屬性。 有關範例,請參閱:
唯讀指標
當配置了多個演算法時,相關屬性(authentication_algorithm、encryption_algorithm )會在 API 回應中返回唯讀的指標值。 例如:
  • authentication_algorithm returns "multiple"
  • encryption_algorithm returns "multiple"
  • dh_group returns 65535

這些值只會在回應中傳回,無法在 PATCH 請求中提交。

{
   "authentication_algorithms": ["sha256", "sha384", "sha512"],
   "authentication_algorithm": "multiple",
   "dh_groups": [14, 15, 16],
   "dh_group": 65535,
   "encryption_algorithms": ["aes128", "aes256"],
   "encryption_algorithm": "multiple"
}

若在基於陣列的屬性中僅配置了一個演算法,則該單一屬性會回傳已配置的值,而非 "multiple"``。

{
   "authentication_algorithms": ["sha256"],
   "authentication_algorithm": "sha256",
   "dh_groups": [14],
   "dh_group": 14,
   "encryption_algorithms": ["aes128"],
   "encryption_algorithm": "aes128"
}
財產混合限制
請勿在單一要求中混合同一演算法類別的單一和基於陣列的屬性。 每個請求選擇一種方法。
  • 正確範例:此範例包括 IKE 的演算法屬性,其中所有類別都只使用基於陣列的屬性:
curl -X PATCH "$vpc_api_endpoint/v1/ike_policies/$ike_policy_id?version=$api_version&generation=2" \
   -H "Authorization: $iam_token" \
   -d '{
     "authentication_algorithms": ["sha256", "sha384", "sha512"],
     "dh_groups": [14, 15, 16],
     "encryption_algorithms": ["aes128", "aes256"]
   }'
  • 不正確的範例:此範例包括 IKE 的演算法屬性,其中單數型和陣列型屬性混用於同一類別:
curl -X PATCH "$vpc_api_endpoint/v1/ike_policies/$ike_policy_id?version=$api_version&generation=2" \
   -H "Authorization: $iam_token" \
   -d '{
     "authentication_algorithm": "sha512",
     "authentication_algorithms": ["sha256", "sha384", "sha512"],
     "dh_groups": [14, 15, 16],
     "encryption_algorithms": ["aes128", "aes256"]
   }'
GCM 演算法要求與限制
如果 encryption_algorithms 屬性包含基於 GCM 的演算法 (aes128gcm16, aes192gcm16, 或 aes256gcm16), authentication_algorithms 屬性必須設定為 ["disabled"]。
  • 正確範例:當 encryption_algorithms 陣列包含基於 GCM 的演算法時,會顯示 IPsec 演算法的屬性:
curl -X PATCH "$vpc_api_endpoint/v1/ipsec_policies/$ipsec_policy_id?version=$api_version&generation=2" \
   -H "Authorization: $iam_token" \
   -d '{
     "authentication_algorithms": ["disabled"],
     "encryption_algorithms": ["aes256gcm16", "aes192gcm16"],
     "pfs_groups": ["group_14", "group_15", "group_16"]
   }'
  • 錯誤範例:顯示 IPsec 的演算法屬性,其中 encryption_algorithms 陣列包含基於 GCM 的演算法:
curl -X PATCH "$vpc_api_endpoint/v1/ipsec_policies/$ipsec_policy_id?version=$api_version&generation=2" \
   -H "Authorization: $iam_token" \
   -d '{
     "authentication_algorithms": ["sha256"],
     "encryption_algorithms": ["aes256gcm16", "aes192gcm16"],
     "pfs_groups": ["group_14", "group_15", "group_16"]
   }'

GCM 演算法提供加密和內建認證功能,作為單一操作的一部分。 請勿設定獨立的驗證演算法,例如 sha256 或 sha512 與 GCM 加密演算法。

請勿在同一項政策中混合使用「GCM」與非「GCM」的加密演算法。 將它們混合使用可能會導致設定衝突和協商失敗。

: 當 authentication_algorithms 設定為 ["disabled"] 時,若要將加密演算法從 GCM 變更為非 GCM 的加密演算法,您也必須更新 authentication_algorithms。

  • 正確範例:同時更新 encryption_algorithms 和 authentication_algorithms 屬性:
curl -X PATCH "$vpc_api_endpoint/v1/ipsec_policies/$ipsec_policy_id?version=$api_version&generation=2" \
   -H "Authorization: $iam_token" \
   -d '{
     "authentication_algorithms": ["sha512", "sha256"],
     "encryption_algorithms": ["aes256", "aes128"],
     "pfs_groups": ["group_14", "group_15", "group_16"]
   }'
  • 不正確的範例:顯示只有 encryption_algorithms 屬性會以非 GCM 演算法更新的情況 (aes128, aes192, aes256):
curl -X PATCH "$vpc_api_endpoint/v1/ipsec_policies/$ipsec_policy_id?version=$api_version&generation=2" \
   -H "Authorization: $iam_token" \
   -d '{
     "authentication_algorithms": ["disabled"],
     "encryption_algorithms": ["aes256", "aes128"],
     "pfs_groups": ["group_14", "group_15", "group_16"]
   }'
演算法驗證規則
確保您請求中的所有演算法值都是有效、唯一且非空的。 只使用支援的演算法名稱,避免重複,並在每個陣列中至少提供一個值。 無效、重複或空的項目會導致驗證錯誤。
  • 正確範例:更新演算法值,其中支援的演算法和值用於所有類別:
{
   "authentication_algorithms": ["sha512", "sha256"],
   "dh_groups": [14, 15],
   "encryption_algorithms": ["aes256", "aes192", "aes128"]
}
  • 不正確的範例:更新演算法值,在相同的演算法類別中使用重複的值:
{
   "authentication_algorithms": ["sha512", "sha256"],
   "dh_groups": [14, 15],
   "encryption_algorithms": ["aes256", "aes256", "aes128"]
}

使用 API 更新 IKE 政策

請依照以下步驟,將您的 IKE 政策從單一演算法更新為多演算法。

開始之前,請務必 設定您的 API 環境。

若要使用 API 更新 IKE 策略,請遵循下列步驟:

  1. 例如,將 IKE 策略 ID 儲存在變數中:

    export ike_policy_id=<your_ike_policy_id>
    

    若要尋找 IKE 策略 ID,請使用 清單 IKE 策略 指令。

  2. 更新 IKE 政策以使用多種演算法。 以對應的陣列型屬性取代單數型屬性。

    authentication_algorithms- 認證演算法陣列。 選項:sha256, sha384, sha512。

    dh_groups- Diffie-Hellman 群陣列。 選項:14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 31。

    encryption_algorithms- 加密演算法陣列。 選項:aes128, aes192, aes256。

    curl -X PATCH "$vpc_api_endpoint/v1/ike_policies/$ike_policy_id?version=$api_version&generation=2" \
      -H "Authorization: $iam_token" \
      -d '{
        "authentication_algorithms": ["sha256", "sha384", "sha512"],
        "dh_groups": [14, 15, 16],
        "encryption_algorithms": ["aes128", "aes256"]
      }'
    

IKE 策略更新範例

當您更新 IKE 策略中基於陣列的屬性 encryption_algorithms, authentication_algorithms,和 dh_groups 時,對應的單一屬性 encryption_algorithm, authentication_algorithm,和 dh_group 也會自動更新。 同樣地,當您更新任何單一的屬性時,相關的陣列型屬性也會自動更新。

以下範例顯示 PATCH 請求如何影響單數和陣列屬性:

範例 1:從單一演算法到多重演算法

  • 本範例顯示從單一演算法到多重演算法的修補行為。 目前的狀態顯示單值屬性 encryption_algorithm 設定為 aes128,而以陣列為基礎的屬性 encryption_algorithms 也只包含 aes128。

       {
       "authentication_algorithm": "sha256",
       "authentication_algorithms": [
          "sha256"
       ],
       "created_at": "2025-03-09T01:40:25.782663Z",
       "dh_group": 14,
       "dh_groups": [
          14
       ],
       "encryption_algorithm": "aes128",
       "encryption_algorithms": [
          "aes128"
       ],
       "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d",
       "ike_version": 2,
       "key_lifetime": 28800,
       "name": "my-ike-policy",
       "negotiation_mode": "main",
       "resource_group": {
          "id": "fee82deba12e4c0fb69c3b09d1f12345",
          "name": "Default"
       },
       "resource_type": "ike_policy"
       }
    
  • 在 PATCH 請求中,更新了基於陣列的屬性 encryption_algorithms,使其同時指定 aes128 和 aes256。

       {
       "encryption_algorithms": [
          "aes128",
          "aes256"
       ]
       }
    
  • 成功的回應如下例所示。 在此回應中,單數屬性 encryption_algorithm 會傳回唯讀值 "multiple",表示目前已配置多個演算法。 此欄位無法透過 PATCH 請求直接進行修改。 陣列型屬性 encryption_algorithms 已更新,現包含 aes128 與 aes256`` 兩者。

       {
       "authentication_algorithm": "sha256",
       "authentication_algorithms": [
          "sha256"
       ],
       "created_at": "2025-03-09T01:40:25.782663Z",
       "dh_group": 14,
       "dh_groups": [
          14
       ],
       "encryption_algorithm": "multiple",
       "encryption_algorithms": [
          "aes128",
          "aes256"
       ],
       "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d",
       "ike_version": 2,
       "key_lifetime": 28800,
       "name": "my-ike-policy",
       "negotiation_mode": "main",
       "resource_group": {
          "id": "fee82deba12e4c0fb69c3b09d1f12345",
          "name": "Default"
       },
       "resource_type": "ike_policy"
       }
    

範例 2:多重演算法轉換為單一演算法

  • 本範例顯示從多重演算法到單一演算法的修補行為。 當前狀態顯示,單一值屬性 encryption_algorithm 設定為 "multiple",而陣列型屬性 ` `encryption_algorithms` ` 則包含 ` `aes128` ` 與 ` `aes256。

       {
       "authentication_algorithm": "sha256",
       "authentication_algorithms": [
          "sha256"
       ],
       "created_at": "2025-03-09T01:40:25.782663Z",
       "dh_group": 14,
       "dh_groups": [
          14
       ],
       "encryption_algorithm": "multiple",
       "encryption_algorithms": [
          "aes128",
          "aes256"
       ],
       "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d",
       "ike_version": 2,
       "key_lifetime": 28800,
       "name": "my-ike-policy",
       "negotiation_mode": "main",
       "resource_group": {
          "id": "fee82deba12e4c0fb69c3b09d1f12345",
          "name": "Default"
       },
       "resource_type": "ike_policy"
       }
    
  • 在 PATCH 請求中,更新了基於陣列的屬性 encryption_algorithms,使其現在只指定 aes256。

       {
       "encryption_algorithms": [
          "aes256"
       ]
       }
    
  • 成功的回應如下例所示。 在此回應中,單一值屬性 encryption_algorithm 會自動設定為 aes256,表示僅配置了一個演算法。 陣列型屬性 ` `encryption_algorithms` ` 已更新,新增了 ` `aes256。

       {
       "authentication_algorithm": "sha256",
       "authentication_algorithms": [
          "sha256"
       ],
       "created_at": "2025-03-09T01:40:25.782663Z",
       "dh_group": 14,
       "dh_groups": [
          14
       ],
       "encryption_algorithm": "aes256",
       "encryption_algorithms": [
          "aes256"
       ],
       "id": "r006-e98f46a3-1e4e-4195-b4e5-b8155192689d",
       "ike_version": 2,
       "key_lifetime": 28800,
       "name": "my-ike-policy",
       "negotiation_mode": "main",
       "resource_group": {
          "id": "fee82deba12e4c0fb69c3b09d1f12345",
          "name": "Default"
       },
       "resource_type": "ike_policy"
       }
    

使用 API 更新 IPsec 政策

請遵循下列步驟,將 IPsec 政策從單一演算法更新為以陣列為基礎的演算法屬性。

開始之前,請務必 設定您的 API 環境。

若要使用 API 更新 IPsec 政策,請遵循下列步驟:

  1. 將 IPsec 政策 ID 儲存在變數中,例如

    export ipsec_policy_id=<your_ipsec_policy_id>
    

    若要尋找 IPsec 政策 ID,請使用 清單 IPsec 政策 指令。

  2. 更新 IPsec 政策以使用多種演算法。 以對應的陣列型屬性取代單數型屬性。

    authentication_algorithms- 認證演算法陣列。 選項:sha256, sha384, sha512, disabled。

    encryption_algorithms- 加密演算法陣列。 選項:aes128, aes192, aes256, aes128gcm16, aes192gcm16, aes256gcm16。

    pfs_groups- 完美前向保密群組的陣列。 選項:disabled, group_14, group_15, group_16, group_17, group_18, group_19, group_20, group_21, group_22, group_23, group_24, group_31.

    curl -X PATCH "$vpc_api_endpoint/v1/ipsec_policies/$ipsec_policy_id?version=$api_version&generation=2" \
      -H "Authorization: $iam_token" \
      -d '{
        "authentication_algorithms": ["sha256", "sha384", "sha512"],
        "encryption_algorithms": ["aes128", "aes256"],
        "pfs_groups": ["group_14", "group_15", "group_16"]
      }'
    

IPsec 政策更新範例

更新 IPsec 策略中基於陣列的屬性 encryption_algorithms, authentication_algorithms,和 pfs_groups 時,對應的單值屬性 encryption_algorithm, authentication_algorithm,和 pfs 也會自動更新。 同樣地,當您更新任何單值屬性時,相關的陣列型屬性也會自動更新。

以下範例顯示 PATCH 請求如何影響單數和陣列屬性:

範例 1:從單一演算法到多重演算法

  • 本範例顯示從單一演算法到多重演算法的修補行為。 目前的狀態顯示單值屬性 encryption_algorithm 設定為 aes128,而以陣列為基礎的屬性 encryption_algorithms 也只包含 aes128。

       {
       "authentication_algorithm": "sha256",
       "authentication_algorithms": [
          "sha256"
       ],
       "connections": [],
       "created_at": "2025-03-09T01:46:00.785105Z",
       "encapsulation_mode": "tunnel",
       "encryption_algorithm": "aes128",
       "encryption_algorithms": [
          "aes128"
       ],
       "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876",
       "key_lifetime": 3600,
       "name": "my-ipsec-policy",
       "pfs": "group_14",
       "pfs_groups": [
          "group_14"
       ],
       "resource_group": {
          "id": "fee82deba12e4c0fb69c3b09d1f12345",
          "name": "Default"
       },
       "resource_type": "ipsec_policy",
       "transform_protocol": "esp"
       }
    
  • 在 PATCH 請求中,更新了基於陣列的屬性 encryption_algorithms,使其同時指定 aes128 和 aes256。

       {
       "encryption_algorithms": [
          "aes128",
          "aes256"
       ]
       }
    
  • 成功的回應如下例所示。 在此回應中,單一值屬性 encryption_algorithm 會自動設定為唯讀值 "multiple",表示目前已配置多個演算法。 此欄位無法透過 `PATCH` 請求直接進行修改。 基於陣列的屬性 ` `encryption_algorithms` ` 現已同時包含 ` `aes128` ` 與 ` `aes256。

       {
       "authentication_algorithm": "sha256",
       "authentication_algorithms": [
          "sha256"
       ],
       "connections": [],
       "created_at": "2025-03-09T01:46:00.785105Z",
       "encapsulation_mode": "tunnel",
       "encryption_algorithm": "multiple",
       "encryption_algorithms": [
          "aes128",
          "aes256"
       ],
       "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876",
       "key_lifetime": 3600,
       "name": "my-ipsec-policy",
       "pfs": "group_14",
       "pfs_groups": [
          "group_14"
       ],
       "resource_group": {
          "id": "fee82deba12e4c0fb69c3b09d1f12345",
          "name": "Default"
       },
       "resource_type": "ipsec_policy",
       "transform_protocol": "esp"
       }
    

範例 2:多重演算法轉換為單一演算法

  • 本範例顯示從多重演算法到單一演算法的修補行為。 當前狀態顯示,單一值屬性 encryption_algorithm 設定為 "multiple",而陣列型屬性 ` `encryption_algorithms` ` 則包含 ` `aes128` ` 與 ` `aes256。

       {
       "authentication_algorithm": "sha256",
       "authentication_algorithms": [
          "sha256"
       ],
       "connections": [],
       "created_at": "2025-03-09T01:46:00.785105Z",
       "encapsulation_mode": "tunnel",
       "encryption_algorithm": "multiple",
       "encryption_algorithms": [
          "aes128",
          "aes256"
       ],
       "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876",
       "key_lifetime": 3600,
       "name": "my-ipsec-policy",
       "pfs": "group_14",
       "pfs_groups": [
          "group_14"
       ],
       "resource_group": {
          "id": "fee82deba12e4c0fb69c3b09d1f12345",
          "name": "Default"
       },
       "resource_type": "ipsec_policy",
       "transform_protocol": "esp"
       }
    
  • 在 PATCH 請求中,更新了基於陣列的屬性 encryption_algorithms,使其現在只指定 aes256。

       {
       "encryption_algorithms": [
          "aes256"
       ]
       }
    
  • 成功的回應如下例所示。 在此回應中,單一值屬性 encryption_algorithm 會自動設定為 aes256,表示僅配置了一個演算法。 陣列型屬性 ` `encryption_algorithms` ` 已更新,新增了 ` `aes256。

        {
        "authentication_algorithm": "sha256",
        "authentication_algorithms": [
           "sha256"
        ],
        "connections": [],
        "created_at": "2025-03-09T01:46:00.785105Z",
        "encapsulation_mode": "tunnel",
        "encryption_algorithm": "aes256",
        "encryption_algorithms": [
           "aes256"
        ],
        "id": "r006-51eae621-dbbc-4c47-b623-b57a43c19876",
        "key_lifetime": 3600,
        "name": "my-ipsec-policy",
        "pfs": "group_14",
        "pfs_groups": [
           "group_14"
        ],
        "resource_group": {
           "id": "fee82deba12e4c0fb69c3b09d1f12345",
           "name": "Default"
        },
        "resource_type": "ipsec_policy",
        "transform_protocol": "esp"
        }