更新為多種 IKE 和 IPsec 演算法
VPN for VPC 支援為 IKE 和 IPsec 政策設定多種演算法。 使用多種演算法可以提高相容性、彈性和安全性。
請依照以下說明,將已廢棄的單一演算法屬性遷移至多個演算法屬性。
開始之前
在更新您的 VPN 政策之前,請先檢視以下資訊。
已停用的奇異演算法屬性
自 2026 年 5 月 29 日起,VPN IKE 和 IPsec 單一演算法屬性已被廢棄。 已設定為單一屬性的現有 VPN 連線將維持原有設定,繼續運作。 不過,建議盡快更新為基於陣列的演算法屬性。
| IKE 單數屬性 (已停用) | IKE 多物業(建議) |
|---|---|
authentication_algorithm |
authentication_algorithms |
encryption_algorithm |
encryption_algorithms |
dh_group |
dh_groups |
| 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_algorithmreturns"multiple"encryption_algorithmreturns"multiple"dh_groupreturns65535
這些值只會在回應中傳回,無法在 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 策略,請遵循下列步驟:
-
例如,將 IKE 策略 ID 儲存在變數中:
export ike_policy_id=<your_ike_policy_id>若要尋找 IKE 策略 ID,請使用 清單 IKE 策略 指令。
-
更新 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 政策,請遵循下列步驟:
-
將 IPsec 政策 ID 儲存在變數中,例如
export ipsec_policy_id=<your_ipsec_policy_id>若要尋找 IPsec 政策 ID,請使用 清單 IPsec 政策 指令。
-
更新 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" }