

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 外部金鑰存放區故障診斷
<a name="xks-troubleshooting"></a>

大多數外部金鑰存放區問題的解決方法，是以每次例外狀況時 AWS KMS 顯示的錯誤訊息表示，或是透過嘗試[將外部金鑰存放區連線至](xks-connect-disconnect.md)其外部金鑰存放區代理失敗時 AWS KMS 傳回的[連線錯誤代碼](#fix-xks-connection)表示。但是，有些問題有點複雜。

診斷外部金鑰存放區的問題時，請先找出原因。這將縮小補救措施的範圍，並使您更有效地進行故障排除。
+ AWS KMS — 問題可能位於其中 AWS KMS，例如[外部金鑰存放區組態](create-xks-keystore.md#xks-requirements)中的值不正確。
+ 外部 — 問題可能源自外部 AWS KMS，包括外部金鑰存放區代理、外部金鑰管理器、外部金鑰或 VPC 端點服務的組態或操作問題。
+ 聯網 — 這可能是連線或聯網的問題，例如代理端點、連接埠、IP 堆疊或私有 DNS 名稱或網域的問題。

**注意**  
當外部金鑰存放區上的管理操作失敗時，其會產生數個不同的例外狀況。但是 AWS KMS ，密碼編譯操作`KMSInvalidStateException`會傳回與外部金鑰存放區外部組態或連線狀態相關的所有失敗。若要識別問題，請使用隨附的錯誤訊息文字。  
連接程序完成之前，[ConnectCustomKeyStore](xks-connect-disconnect.md) 操作會迅速成功。若要確定連接程序是否成功，請檢視外部金鑰存放區的[連接狀態](xks-connect-disconnect.md#xks-connection-state)。如果連接程序失敗，則 AWS KMS 會傳回[連接錯誤代碼](#xks-connection-error-codes)，說明原因並建議解決方法。

**Topics**
+ [外部金鑰存放區的故障診斷工具](#xks-troubleshooting-tools)
+ [組態錯誤](#fix-xks-configuration)
+ [外部金鑰存放區連接錯誤](#fix-xks-connection)
+ [延遲和逾時錯誤](#fix-xks-latency)
+ [身分驗證憑證錯誤](#fix-xks-credentials)
+ [金鑰狀態錯誤](#fix-unavailable-xks-keys)
+ [解密錯誤](#fix-xks-decrypt)
+ [外部金鑰錯誤](#fix-external-key)
+ [代理問題](#fix-xks-proxy)
+ [代理授權問題](#fix-xks-authorization)

## 外部金鑰存放區的故障診斷工具
<a name="xks-troubleshooting-tools"></a>

AWS KMS 提供數種工具，協助您識別和解決外部金鑰存放區及其金鑰的問題。將這些工具與外部金鑰存放區代理和外部金鑰管理器隨附的工具搭配使用。

**注意**  
您的外部金鑰存放區代理和外部金鑰管理器可能會提供更簡單的方法來建立和維護外部金鑰存放區及其 KMS 金鑰。如需詳細資訊，請參閱外部工具的文件。

**AWS KMS 例外狀況和錯誤訊息**  
AWS KMS 提供有關其遇到的任何問題的詳細錯誤訊息。您可以在 [https://docs.aws.amazon.com/kms/latest/APIReference/](https://docs.aws.amazon.com/kms/latest/APIReference/)和 AWS SDKs中找到有關 AWS KMS 例外狀況的其他資訊。即使您使用 AWS KMS 主控台，也可能會發現這些參考很有幫助。例如，請參閱 `CreateCustomKeyStores` 操作的[錯誤](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateCustomKeyStore.html#API_CreateCustomKeyStore_Errors)清單。  
為了最佳化外部金鑰存放區代理的效能， AWS KMS 會根據代理的可靠性，在 5 分鐘的指定彙總期間內傳回例外狀況。如果發生 500 內部伺服器錯誤、503 服務無法使用或連線逾時，具有高可靠性的代理會傳回`KMSInternalException`並觸發自動重試，以確保請求最終成功。不過，可靠性低的代理會傳回 `KMSInvalidStateException`。如需詳細資訊，請參閱[監控外部金鑰存放區](https://docs.aws.amazon.com/kms/latest/developerguide/xks-monitoring.html)。  
如果問題出現在不同的 AWS 服務中，例如當您使用外部金鑰存放區中的 KMS 金鑰來保護其他服務中的資源時 AWS ，該 AWS 服務可能會提供其他資訊，以協助您識別問題。如果 AWS 服務不提供訊息，您可以在記錄 KMS 金鑰使用的 [CloudTrail 日誌](logging-using-cloudtrail.md)中檢視錯誤訊息。

**[CloudTrail日誌](logging-using-cloudtrail.md)**  
每個 AWS KMS API 操作，包括 AWS KMS 主控台中的動作，都會記錄在 AWS CloudTrail log 中。 會 AWS KMS 記錄日誌項目，以取得成功和失敗的操作。對於失敗的操作，日誌項目會包含 AWS KMS 例外狀況名稱 (`errorCode`) 和錯誤訊息 (`errorMessage`)。您可以使用此資訊來協助您識別和解決錯誤。如需範例，請參閱 [使用外部金鑰存放區中的 KMS 金鑰進行解密失敗](ct-decrypt.md#ct-decrypt-xks-fail)。  
日誌項目也包含請求 ID。如果請求到達外部金鑰存放區代理，則您可以使用日誌項目中的請求 ID，在代理日誌中尋找相應的請求 (如果代理提供的話)。

**[CloudWatch 指標](monitoring-cloudwatch.md#kms-metrics)**  
AWS KMS 會記錄有關外部金鑰存放區操作和效能的詳細 Amazon CloudWatch 指標，包括延遲、調節、代理錯誤、外部金鑰管理器狀態、TLS 憑證過期前的天數，以及代理身分驗證憑證的回報存留期。您可以使用這些指標為外部金鑰存放區和 CloudWatch 警示的操作開發資料模型，在即將發生的問題出現之前提醒您。  
AWS KMS 建議您建立 CloudWatch 警示來監控外部金鑰存放區指標。這些警報會在問題發生之前提醒您早期跡象。

**[監控圖表](xks-monitoring.md)**  
AWS KMS 會在 AWS KMS 主控台中每個外部金鑰存放區的詳細資訊頁面上顯示外部金鑰存放區 CloudWatch 指標的圖形。您可以使用圖表中的資料來協助尋找錯誤來源、偵測即將發生的問題、建立基準以及強化 CloudWatch 警示閾值。如需有關解釋監控圖表及使用其資料的詳細資訊，請參閱 [監控外部金鑰存放區](xks-monitoring.md)。

**顯示外部金鑰存放區和 KMS 金鑰**  
AWS KMS 會在 AWS KMS 主控台的外部金鑰存放區中，以及回應 [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) 和 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 操作時，顯示外部金鑰存放區和 KMS 金鑰的詳細資訊。這些顯示包括外部金鑰存放區和 KMS 金鑰的特殊欄位，以及可用於進行故障診斷的資訊，例如外部金鑰存放區的[連接狀態](xks-connect-disconnect.md#xks-connection-state)，以及與 KMS 金鑰相關聯的外部金鑰 ID。如需詳細資訊，請參閱[檢視外部金鑰存放區](view-xks-keystore.md)。

**[XKS 代理測試用戶端](https://github.com/aws-samples/aws-kms-xksproxy-test-client)**  
AWS KMS 提供開放原始碼測試用戶端，可驗證外部金鑰存放區代理是否符合[AWS KMS 外部金鑰存放區代理 API 規格](https://github.com/aws/aws-kms-xksproxy-api-spec/)。您可以使用此測試用戶端來識別並解決外部金鑰存放區代理的問題。

## 組態錯誤
<a name="fix-xks-configuration"></a>

建立外部金鑰存放區時，您可以指定組成外部金鑰存放區*組態*的屬性值，例如[代理身分驗證憑證](create-xks-keystore.md#require-credential)、[代理 URI 端點](create-xks-keystore.md#require-endpoint)、[代理 URI 路徑](create-xks-keystore.md#require-path)以及 [VPC 端點服務名稱](create-xks-keystore.md#require-vpc-service-name)。當 AWS KMS 偵測到屬性值中的錯誤時，操作會失敗，並傳回指出錯誤值的錯誤。

許多組態問題可以透過修正不正確的值來解決。您可以修正無效的代理 URI 路徑或代理身分驗證憑證，而無需中斷連接外部金鑰存放區。如需這些值的定義，包括唯一性要求，請參閱 [備妥先決條件](create-xks-keystore.md#xks-requirements)。如需有關更新這些值的指示，請參閱 [編輯外部金鑰存放區屬性](update-xks-keystore.md)。

若要避免代理 URI 路徑和代理身分驗證憑證值發生錯誤，在建立或更新外部金鑰存放區時，請將[代理組態檔案](create-xks-keystore.md#proxy-configuration-file)上傳至 AWS KMS 主控台。這是一個基於 JSON 的檔案，其中包含代理 URI 路徑和代理身分驗證憑證值，由外部金鑰存放區代理或外部金鑰管理器提供。您無法將代理組態檔案與 AWS KMS API 操作搭配使用，但您可以使用檔案中的值來協助您為 API 請求提供符合代理中值的參數值。

### 一般組態錯誤
<a name="fix-xks-gen-configuration"></a>

**例外狀況**：`CustomKeyStoreInvalidStateException` (`CreateKey`)、`KMSInvalidStateException` (密碼編譯操作)、`XksProxyInvalidConfigurationException` (管理操作，`CreateKey` 除外)

[**連接錯誤代碼**](#xks-connection-error-codes)：`XKS_PROXY_INVALID_CONFIGURATION`、`XKS_PROXY_INVALID_TLS_CONFIGURATION`

對於具有[公有端點連線](choose-xks-connectivity.md#xks-connectivity-public-endpoint)的外部金鑰存放區， 會在您建立和更新外部金鑰存放區時 AWS KMS 測試屬性值。對於具有 [VPC 端點服務連接](choose-xks-connectivity.md#xks-vpc-connectivity)的外部金鑰存放區， AWS KMS 會在連接和更新外部金鑰存放區時測試屬性值。

**注意**  
即使嘗試將外部金鑰存放區連接至其外部金鑰存放區代理失敗，非同步的 `ConnectCustomKeyStore` 操作仍可能成功。在這種情況下，沒有例外狀況，但是外部金鑰存放區的連接狀態為 Failed (失敗)，連接錯誤代碼會說明錯誤訊息。如需詳細資訊，請參閱[外部金鑰存放區連接錯誤](#fix-xks-connection)。

如果 AWS KMS 偵測到屬性值中的錯誤，操作會失敗，並`XksProxyInvalidConfigurationException`傳回下列其中一個錯誤訊息。


|  | 
| --- |
| 由於 URI 路徑無效，外部金鑰存放區代理拒絕請求。驗證外部金鑰存放區的 URI 路徑，並在必要時更新。 | 
+ [代理 URI 路徑](create-xks-keystore.md#require-path)是 AWS KMS 請求代理 APIs的基本路徑。如果此路徑不正確，則對代理的所有請求都會失敗。若要檢視外部金鑰存放區的[當前代理 URI 路徑](view-xks-keystore.md)，請使用 AWS KMS 主控台或 `DescribeCustomKeyStores` 操作。若要尋找正確的代理 URI 路徑，請參閱您的外部金鑰存放區代理文件。如需有關修正代理 URI 路徑值的說明，請參閱 [編輯外部金鑰存放區屬性](update-xks-keystore.md)。
+ 外部金鑰存放區代理的代理 URI 路徑可能會隨著外部金鑰存放區代理或外部金鑰管理器的更新而變更。如需有關這些變更的資訊，請參閱外部金鑰存放區代理或外部金鑰管理器的文件。


|  | 
| --- |
| `XKS_PROXY_INVALID_TLS_CONFIGURATION`AWS KMS 無法建立與外部金鑰存放區代理的 TLS 連接。驗證 TLS 組態，包括其憑證。 | 
+ 所有外部金鑰存放區代理都需要 TLS 憑證。TLS 憑證必須由外部金鑰存放區支援的公有憑證授權機構核發。如需支援的 CA 清單，請參閱「 AWS KMS 外部金鑰存放區代理 API 規格」中的[受信任憑證授權機構](https://github.com/aws/aws-kms-xksproxy-api-spec/blob/main/TrustedCertificateAuthorities)。
+ 若為公有端點連接，TLS 憑證上的主體通用名稱 (CN) 必須與外部金鑰存放區代理之[代理 URI 端點](create-xks-keystore.md#require-endpoint)中的網域名稱相符。例如，如果公有端點為 https://myproxy.xks.example.com，則 TLS 憑證上的通用名稱必須為 `myproxy.xks.example.com` 或 `*.xks.example.com`。
+ 若為 VPC 端點服務連接，TLS 憑證上的主體通用名稱 (CN) 必須與 [VPC 端點服務](create-xks-keystore.md#require-vpc-service-name)的私有 DNS 名稱相符。例如，如果私有 DNS 名稱為 myproxy-private.xks.example.com，則 TLS 憑證上的通用名稱必須為 `myproxy-private.xks.example.com` 或 `*.xks.example.com`。
+ TLS 憑證不能過期。若要取得 TLS 憑證的到期日，請使用 SSL 工具，例如 [OpenSSL](https://www.openssl.org/)。若要監控與外部金鑰存放區關聯的 TLS 憑證的到期日，請使用 [XksProxyCertificateDaysToExpire](monitoring-cloudwatch.md#metric-xks-proxy-certificate-days-to-expire) CloudWatch 指標。TLS 憑證過期日期的天數也會顯示在 AWS KMS 主控台的[**監控**區段](xks-monitoring.md)中。
+ 如果您使用的是[公有端點連接](choose-xks-connectivity.md#xks-connectivity-public-endpoint)，則請使用 SSL 測試工具來測試您的 SSL 組態。TLS 連接錯誤可能是因為不正確的憑證鏈結所導致。

### VPC 端點服務連接組態錯誤
<a name="fix-xks-vpc-configuration"></a>

**例外狀況**：`XksProxyVpcEndpointServiceNotFoundException`、`XksProxyVpcEndpointServiceInvalidConfigurationException`

除了一般連線問題之外，使用 VPC 端點服務連線建立、連線或更新外部金鑰存放區時，您可能會遇到下列問題。在[建立](create-xks-keystore.md)、[連線](xks-connect-disconnect.md)和[更新](update-xks-keystore.md)外部金鑰存放區時，使用 VPC 端點服務連線 AWS KMS 測試外部金鑰存放區的屬性值。當管理操作因組態錯誤而失敗時，會產生下列例外狀況：


|  | 
| --- |
| XksProxyVpcEndpointServiceNotFoundException | 

原因可能為下列之一：
+ 不正確的 VPC 端點服務名稱。請確認外部金鑰存放區的 VPC 端點服務名稱正確且符合外部金鑰存放區的代理 URI 端點值。若要查找 VPC 端點服務名稱，請使用 [Amazon VPC 主控台](https://console.aws.amazon.com/vpc)或 [DescribeVpcEndpointServices](https://docs.aws.amazon.com/AmazonVPC/latest/APIReference/DescribeVpcEndpointServices.html) 操作。若要尋找現有外部金鑰存放區的 VPC 端點服務名稱和代理 URI 端點，請使用 AWS KMS 主控台或 [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) 操作。如需詳細資訊，請參閱[檢視外部金鑰存放區](view-xks-keystore.md)。
+ VPC 端點服務可能位於與外部金鑰存放區 AWS 區域 不同的 中。請確認 VPC 端點服務與外部金鑰存放區處於相同區域中。(區域名稱的外部名稱 (例如 `us-east-1`) 是 VPC 端點服務名稱的一部分，例如 com.amazonaws.vpce.us-east-1.vpce-svc-example)。如需外部金鑰存放區之 VPC 端點服務的要求清單，請參閱 [VPC 端點服務](create-xks-keystore.md#require-vpc-service-name)。您無法將 VPC 端點服務或外部金鑰存放區移至不同區域。不過，您可以在與 VPC 端點服務相同的區域中建立新的外部金鑰存放區。如需詳細資訊，請參閱 [設定 VPC 端點服務連線](vpc-connectivity.md) 和 [建立外部金鑰存放區](create-xks-keystore.md)。
+ AWS KMS 不是 VPC 端點服務的允許主體。VPC 端點服務的 **Allow principals** (允許主體) 清單必須包含 `cks.kms.{{<region>}}.amazonaws.com` 值，例如 `cks.kms.{{eu-west-3}}.amazonaws.com`。如需有關新增此值的指示，請參閱《AWS PrivateLink 指南》**中的[管理許可](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#add-remove-permissions)。


|  | 
| --- |
| XksProxyVpcEndpointServiceInvalidConfigurationException | 

當 VPC 端點服務無法滿足下列其中一項要求時，就會發生此錯誤：
+ VPC 需要至少兩個私有子網路，每個處於不同的可用區域。如需有關將子網路新增至 VPC 的說明，請參閱《Amazon VPC 使用者指南》**中的[在 VPC 中建立子網路](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-subnets.html#create-subnets)。
+ 您的 [VPC 端點服務類型](https://docs.aws.amazon.com/vpc/latest/privatelink/create-endpoint-service.html)必須使用網路負載平衡器，而非閘道負載平衡器。
+ VPC 端點服務不要求接受 (**Acceptance required** (要求接受) 必須為 False)。如果需要手動接受每個連線請求， AWS KMS 則 無法使用 VPC 端點服務連線到外部金鑰存放區代理。如需詳細資訊，請參閱《AWS PrivateLink 指南》**中的[接受或拒絕連接請求](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#accept-reject-connection-requests)。
+ VPC 端點服務必須具有私有 DNS 名稱，它是公有網域的子網域。例如，如果私有 DNS 名稱為 `https://myproxy-private.xks.example.com`，則 `xks.example.com` 或 `example.com` 網域必須具有公有 DNS 伺服器。若要檢視或變更 VPC 端點服務的私有 DNS 名稱，請參閱《AWS PrivateLink 指南》**中的[管理 VPC 端點服務的 DNS 名稱](https://docs.aws.amazon.com/vpc/latest/privatelink/manage-dns-names.html)。
+ 私有 DNS 名稱網域的 **Domain verification status** (網域驗證狀態) 必須為 `verified`。若要檢視和更新私有 DNS 名稱網域的驗證狀態，請參閱 [步驟 5：驗證您的私有 DNS 名稱網域](vpc-connectivity.md#xks-private-dns)。新增必要的文字記錄後，可能需要幾分鐘的時間才會顯示更新的驗證狀態。
**注意**  
只有當私有 DNS 網域是公有網域的子網域時，才能驗證它。否則，即使新增所需的 TXT 記錄後，私有 DNS 網域的驗證狀態也不會變更。
+ 確保 AWS KMS 和外部金鑰存放區代理之間的任何防火牆允許進出 Proxy 上連接埠 443 的流量。透過 IPv4 在連接埠 443 上 AWS KMS 通訊。此值不可設定。
+ VPC 端點服務的私有 DNS 名稱必須與外部金鑰存放區的[代理 URI 端點](create-xks-keystore.md#require-endpoint)值相符。對於具有 VPC 端點服務連接的外部金鑰存放區，代理 URI 端點必須為 `https://`，後面為 VPC 端點服務的私有 DNS 名稱。若要檢視代理 URI 端點值，請參閱 [檢視外部金鑰存放區](view-xks-keystore.md)。若要變更代理 URI 端點值，請參閱 [編輯外部金鑰存放區屬性](update-xks-keystore.md)。

## 外部金鑰存放區連接錯誤
<a name="fix-xks-connection"></a>

[將外部金鑰存放區連接至](about-xks-connecting.md)其外部金鑰存放區代理的程序大約需要五分鐘才能完成。除非其快速失敗，否則 `ConnectCustomKeyStore` 操作會傳回 HTTP 200 回應和不帶屬性的 JSON 物件。不過，這個初始回應並不表示連接已成功。若要判斷外部金鑰存放區是否已連接，請參閱其[連接狀態](xks-connect-disconnect.md#xks-connection-state)。如果連線失敗，外部金鑰存放區的連線狀態會變更為 ，`FAILED`並 AWS KMS 傳回[連線錯誤代碼](#xks-connection-error-codes)，說明失敗的原因。

**注意**  
如果自訂金鑰存放區的狀態為 `FAILED`，在嘗試重新連接之前，您必須中斷連接自訂金鑰存放區。您無法連接具有 `FAILED` 連接狀態的自訂金鑰存放區。

若要檢視外部金鑰存放區的連接狀態：
+ 在 [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) 回應中，檢視 `ConnectionState` 元素的值。
+ 在 AWS KMS 主控台中，**連線狀態**會出現在外部金鑰存放區資料表中。此外，在每個外部金鑰存放區的詳細資訊頁面上，**Connection state** (連接狀態) 會顯示在 **General configuration** (一般組態) 區段中。

當連接狀態為 `FAILED` 時，連接錯誤代碼有助於解釋錯誤。

若要檢視連接錯誤代碼：
+ 在 [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) 回應中，檢視 `ConnectionErrorCode` 元素的值。只有當 `ConnectionState` 為 `FAILED` 時，此元素才會出現在 `DescribeCustomKeyStores` 回應中。
+ 若要在 AWS KMS 主控台中檢視連線錯誤代碼，請在外部金鑰存放區的詳細資訊頁面上，並將滑鼠游標暫留在**失敗**值上。  
![自訂金鑰存放區詳細資訊頁面上的連接錯誤代碼](http://docs.aws.amazon.com/zh_tw/kms/latest/developerguide/images/connection-error-code.png)

### 外部金鑰存放區的連接錯誤代碼
<a name="xks-connection-error-codes"></a>

下列連接錯誤代碼適用於外部金鑰存放區

`INTERNAL_ERROR`  
AWS KMS 由於內部錯誤， 無法完成請求。重試 請求。若為 `ConnectCustomKeyStore` 請求，請先中斷連接自訂金鑰存放區，再重試連接。

`INVALID_CREDENTIALS`  
在指定的外部金鑰存放區代理上，一個或兩個 `XksProxyAuthenticationCredential` 值無效。

`NETWORK_ERRORS`  
網路錯誤 AWS KMS 導致無法將自訂金鑰存放區連接至其後端金鑰存放區。

`XKS_PROXY_ACCESS_DENIED`  
AWS KMS 請求會被拒絕存取外部金鑰存放區代理。如果外部金鑰存放區代理有授權規則，請確認其允許 AWS KMS 代表您與代理通訊。

`XKS_PROXY_INVALID_CONFIGURATION`  
組態錯誤導致外部金鑰存放區無法連接到其代理。驗證 `XksProxyUriPath` 的值。

`XKS_PROXY_INVALID_RESPONSE`  
AWS KMS 無法解譯來自外部金鑰存放區代理的回應。如果您重複看到此連接錯誤代碼，則請通知您的外部金鑰存放區代理廠商。

`XKS_PROXY_INVALID_TLS_CONFIGURATION`  
AWS KMS 無法連線至外部金鑰存放區代理，因為 TLS 組態無效。確認外部金鑰存放區代理支援 TLS 1.2 或 1.3。此外，請確認 TLS 憑證尚未過期，與 `XksProxyUriEndpoint` 值中的主機名稱相符，並且由[受信任憑證授權機構](https://github.com/aws/aws-kms-xksproxy-api-spec/blob/main/TrustedCertificateAuthorities)清單中所包含的受信任憑證授權機構簽署。

`XKS_PROXY_NOT_REACHABLE`  
AWS KMS 無法與您的外部金鑰存放區代理通訊。確認 `XksProxyUriEndpoint` 和 `XksProxyUriPath` 正確無誤。使用外部金鑰存放區代理的工具來驗證代理處於作用中狀態且可在其網路上使用。此外，請確認您的外部金鑰管理器執行個體運作正常。如果代理報告所有外部金鑰管理器執行個體都無法使用，則連接嘗試失敗，並顯示此連接錯誤代碼。

`XKS_PROXY_TIMED_OUT`  
AWS KMS 可以連線至外部金鑰存放區代理，但代理在分配 AWS KMS 的時間內不會回應 。如果您重複看到此連接錯誤代碼，則請通知您的外部金鑰存放區代理廠商。

`XKS_VPC_ENDPOINT_SERVICE_INVALID_CONFIGURATION`  
Amazon VPC 端點服務組態不符合 AWS KMS 外部金鑰存放區的要求。  
+ VPC 端點服務必須是呼叫者 AWS 帳戶中的介面端點的端點服務。
+ 其必須擁有已連接到至少兩個子網路的網路負載平衡器 (NLB)，每個位於不同的可用區域中。
+ `Allow principals` 清單必須包含 區域的 AWS KMS 服務主體，`cks.kms.<region>.amazonaws.com`例如 `cks.kms.us-east-1.amazonaws.com`。
+ 其*不得*要求[接受](https://docs.aws.amazon.com/vpc/latest/privatelink/create-endpoint-service.html)連接請求。
+ 其必須擁有私有 DNS 名稱。具有 `VPC_ENDPOINT_SERVICE` 連接的外部金鑰存放區的私有 DNS 名稱在其 AWS 區域中必須唯一。
+ 私有 DNS 名稱網域的[驗證狀態](https://docs.aws.amazon.com/vpc/latest/privatelink/verify-domains.html)必須為 `verified`。
+ [TLS 憑證](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html)會指定可連接端點的私有 DNS 主機名稱。

`XKS_VPC_ENDPOINT_SERVICE_NOT_FOUND`  
AWS KMS 找不到用於與外部金鑰存放區代理通訊的 VPC 端點服務。確認 `XksProxyVpcEndpointServiceName` 正確無誤，且 AWS KMS 服務主體在 Amazon VPC 端點服務上具有服務消費者許可。

## 延遲和逾時錯誤
<a name="fix-xks-latency"></a>

**例外狀況**：`CustomKeyStoreInvalidStateException` (`CreateKey`)、`KMSInvalidStateException` (密碼編譯操作)、`XksProxyUriUnreachableException` (管理操作)

[**連接錯誤代碼**](#xks-connection-error-codes)：`XKS_PROXY_NOT_REACHABLE`、`XKS_PROXY_TIMED_OUT`

當 AWS KMS 無法在 250 毫秒的逾時間隔內聯絡代理時，它會傳回例外狀況。 `CreateCustomKeyStore`並`UpdateCustomKeyStore`傳回 `XksProxyUriUnreachableException`。密碼編譯操作會傳回 標準，`KMSInvalidStateException`並顯示描述問題的錯誤訊息。如果`ConnectCustomKeyStore`失敗， 會 AWS KMS 傳回描述問題的[連線錯誤代碼](#fix-xks-connection)。

逾時錯誤可能是暫時性的問題，可透過重試請求來解決。如果問題依然存在，請確認外部金鑰存放區代理處於作用中狀態且已連接至網路，並且其代理 URI 端點、代理 URI 路徑以及 VPC 端點服務名稱 (如果有的話) 在外部金鑰存放區中正確無誤。此外，確認您的外部金鑰管理器靠近 AWS 區域 外部金鑰存放區的 。如果需要更新任何這些值，請參閱 [編輯外部金鑰存放區屬性](update-xks-keystore.md)。

若要追蹤延遲模式，請使用 AWS KMS 主控台之 [**Monitoring** (監控) 區段](xks-monitoring.md)中的 [`XksProxyLatency`](monitoring-cloudwatch.md#metric-xks-proxy-latency) CloudWatch 指標和 **Average latency** (平均延遲) 圖表 (基於該指標)。您的外部金鑰存放區代理也可能會產生追蹤延遲和逾時的日誌和指標。


|  | 
| --- |
| `XksProxyUriUnreachableException`AWS KMS 無法與外部金鑰存放區代理通訊。這可能是暫時性的網路問題。如果您重複看到此錯誤，請確認外部金鑰存放區代理處於作用中狀態且已連接至網路，並且其端點 URI 在外部金鑰存放區中正確無誤。 | 
+ 外部金鑰存放區代理未在 250 毫秒逾時間隔內回應 AWS KMS 代理 API 請求。這可能表示代理發生暫時性的網路問題或者操作或效能問題。如果重試無法解決問題，請通知您的外部金鑰存放區代理管理員。

延遲和逾時錯誤通常顯示為連接失敗。當 [ConnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html) 操作失敗時，外部金鑰存放區的*連線狀態*會變更為 ，`FAILED`並 AWS KMS 傳回說明錯誤的*連線錯誤代碼*。如需連接錯誤代碼和解決錯誤的建議清單，請參閱 [外部金鑰存放區的連接錯誤代碼](#xks-connection-error-codes)。**All custom key stores** (所有自訂金鑰存放區) 和 **External key stores** (外部金鑰存放區) 的連接代碼清單適用於外部金鑰存放區。下列連接錯誤與延遲和逾時有關。


|  | 
| --- |
| `XKS_PROXY_NOT_REACHABLE`<br />-或-<br />`CustomKeyStoreInvalidStateException`, `KMSInvalidStateException`, `XksProxyUriUnreachableException`AWS KMS 無法與外部金鑰存放區代理通訊。請確認外部金鑰存放區代理處於作用中狀態且已連接至網路，以及外部金鑰存放區中的 URI 路徑和端點 URI 或 VPC 服務名稱正確無誤。 | 

此錯誤可能發生的原因如下：
+ 外部金鑰存放區代理處於非作用中狀態，或未連接至網路。
+ 外部金鑰存放區組態中的[代理 URI 端點](create-xks-keystore.md#require-endpoint)、[代理 URI 路徑](create-xks-keystore.md#require-path)或 [VPC 端點服務名稱](create-xks-keystore.md#require-vpc-service-name) (如果適用) 值中有錯誤。若要檢視外部金鑰存放區組態，請使用 [DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) 操作，或在 [主控台中檢視外部金鑰存放區的詳細資訊頁面](view-xks-keystore.md)。 AWS KMS 
+  AWS KMS 與外部金鑰存放區 proxy 之間的網路路徑上可能發生網路組態錯誤，例如連接埠錯誤。透過 IPv4 與連接埠 443 上的外部金鑰存放區代理 AWS KMS 通訊。此值不可設定。
+ 當外部金鑰存放區代理報告 (在 [GetHealthStatus](keystore-external.md#concept-proxy-apis) 回應中) 所有外部金鑰管理器執行個體都為 `UNAVAILABLE` 時，[ConnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html) 操作會失敗，並顯示值為 `XKS_PROXY_NOT_REACHABLE` 的 `ConnectionErrorCode`。如需說明，請參閱外部金鑰管理器文件。
+ 此錯誤可能是因為外部金鑰管理器與 AWS 區域 具有外部金鑰存放區的 之間有很長的實體距離。 AWS 區域 與外部金鑰管理器之間的 ping 延遲 （網路往返時間 (RTT)) 不應超過 35 毫秒。您可能必須在 AWS 區域 更接近外部金鑰管理器的 中建立外部金鑰存放區，或將外部金鑰管理器移至更接近 的資料中心 AWS 區域。


|  | 
| --- |
| `XKS_PROXY_TIMED_OUT`<br />-或-<br />`CustomKeyStoreInvalidStateException`, `KMSInvalidStateException`, `XksProxyUriUnreachableException`AWS KMS 拒絕請求，因為外部金鑰存放區代理沒有及時回應。重試 請求。如果您重複看到此錯誤，請向外部金鑰存放區代理管理員報告。 | 

此錯誤可能發生的原因如下：
+ 此錯誤可能是由於外部金鑰管理器與外部金鑰存放區代理之間有很長的實際距離。如果可能，請將外部金鑰存放區代理移至更接近外部金鑰管理器的位置。
+ 當代理無法處理來自 的請求量和頻率時，可能會發生逾時錯誤 AWS KMS。如果 CloudWatch 指標指示持續存在問題，則請通知您的外部金鑰存放區代理管理員。
+ 當外部金鑰管理器與外部金鑰存放區的 Amazon VPC 之間的連接未正常運作時，可能會發生逾時錯誤。如果您使用的是 AWS Direct Connect，請確認您的 VPC 和外部金鑰管理器可以有效通訊。如需解決任何問題的協助，請參閱 Direct Connect 《 使用者指南》中的[故障診斷 AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Troubleshooting.html)。


|  | 
| --- |
| `XKS_PROXY_TIMED_OUT`<br />-或-<br />`CustomKeyStoreInvalidStateException`, `KMSInvalidStateException`, `XksProxyUriUnreachableException` 外部金鑰存放區代理沒有在規定時間內回應請求。重試 請求。如果您重複看到此錯誤，請向外部金鑰存放區代理管理員報告。 | 
+ 此錯誤可能是由於外部金鑰管理器與外部金鑰存放區代理之間有很長的實際距離。如果可能，請將外部金鑰存放區代理移至更接近外部金鑰管理器的位置。

## 身分驗證憑證錯誤
<a name="fix-xks-credentials"></a>

**例外狀況**：`CustomKeyStoreInvalidStateException` (`CreateKey`)、`KMSInvalidStateException` (密碼編譯操作)、`XksProxyIncorrectAuthenticationCredentialException` (`CreateKey` 以外的管理操作)

您可以在外部金鑰存放區代理 AWS KMS 上建立和維護 的身分驗證憑證。然後在建立外部金鑰存放區時 AWS KMS 告知登入資料值。若要變更身分驗證憑證，請在外部金鑰存放區代理上進行變更。然後，更新外部金鑰存放區的[憑證](update-xks-keystore.md#xks-edit-name)。如果代理輪換憑證，則必須更新外部金鑰存放區的[憑證](update-xks-keystore.md#xks-edit-name)。

如果外部金鑰存放區代理無法驗證使用外部金鑰存放區的[代理身分驗證憑證](keystore-external.md#concept-xks-credential)簽署的請求，則效果取決於請求：
+ `CreateCustomKeyStore` 和 `UpdateCustomKeyStore` 因 `XksProxyIncorrectAuthenticationCredentialException` 失敗。
+ `ConnectCustomKeyStore` 成功，但連接失敗。連接狀態為 `FAILED`，連接錯誤代碼為 `INVALID_CREDENTIALS`。如需詳細資訊，請參閱[外部金鑰存放區連接錯誤](#fix-xks-connection)。
+ 密碼編譯操作`KMSInvalidStateException`會傳回外部金鑰存放區中的所有外部組態錯誤和連線狀態錯誤。隨附的錯誤訊息描述了問題。


|  | 
| --- |
| 外部金鑰存放區代理拒絕了請求，因為它無法對 AWS KMS進行身分驗證。驗證外部金鑰存放區的憑證，並在必要時更新。 | 

此錯誤可能發生的原因如下：
+ 外部金鑰存放區的存取金鑰 ID 或私密存取金鑰與外部金鑰存放區代理上建立的值不符。

  若要修正此錯誤，請更新外部金鑰存放區的[代理身分驗證憑證](update-xks-keystore.md#xks-edit-name)。您可以在不中斷外部金鑰存放區連接的情況下進行此變更。
+  AWS KMS 與外部金鑰存放區代理之間的反向代理可能會以使 SigV4 簽章失效的方式操作 HTTP 標頭。若要修正此錯誤，請通知代理管理員。

## 金鑰狀態錯誤
<a name="fix-unavailable-xks-keys"></a>

**例外狀況**：`KMSInvalidStateException`

`KMSInvalidStateException` 用於自訂金鑰存放區中 KMS 金鑰的兩種不同用途。
+ 當管理操作 (例如 `CancelKeyDeletion`) 失敗並傳回此例外狀況時，表示 KMS 金鑰的[金鑰狀態](key-state.md)與操作不相容。
+ 當自訂金鑰存放區中 KMS 金鑰的[密碼編譯操作](kms-cryptography.md#cryptographic-operations)因 `KMSInvalidStateException` 失敗時，可能表示 KMS 金鑰的金鑰狀態有問題。但是 AWS KMS ，密碼編譯操作`KMSInvalidStateException`會傳回外部金鑰存放區中的所有外部組態錯誤和連線狀態錯誤。若要識別問題，請使用例外狀況隨附的錯誤訊息。

若要尋找 AWS KMS API 操作所需的金鑰狀態，請參閱 [金鑰的 AWS KMS 金鑰狀態](key-state.md)。若要尋找 KMS 金鑰的金鑰狀態，請在 **Customer managed keys** (客戶受管金鑰) 頁面上，檢視 KMS 金鑰的 **Status** (狀態) 欄位。或使用 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 操作並檢視回應中的 `KeyState` 元素。如需詳細資訊，請參閱[識別和檢視金鑰](viewing-keys.md)。

**注意**  
外部金鑰存放區中 KMS 金鑰的金鑰狀態不會指示與其關聯的[外部金鑰](keystore-external.md#concept-external-key)的任何狀態資訊。如需有關外部金鑰狀態的資訊，請使用外部金鑰管理器和外部金鑰存放區代理工具。  
`CustomKeyStoreInvalidStateException` 指的是外部金鑰存放區的[連接狀態](xks-connect-disconnect.md#xks-connection-state)，而不是 KMS 金鑰的[金鑰狀態](key-state.md)。

自訂存放區中 KMS 金鑰的密碼編譯操作可能會失敗，因為 KMS 金鑰的金鑰狀態為 `Unavailable` 或 `PendingDeletion`。(已停用的金鑰會傳回 `DisabledException`。)
+ 只有當您刻意在 AWS KMS 主控台中停用 KMS 金鑰或使用 [DisableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKey.html) 操作時，KMS 金鑰才會有金鑰`Disabled`狀態。當 KMS 金鑰被停用時，您可以檢視和管理金鑰，但無法在密碼編譯操作中使用它。若要修正此問題，請啟用金鑰。如需詳細資訊，請參閱[啟用和停用金鑰](enabling-keys.md)。
+ 當外部金鑰存放區與其外部金鑰存放區代理中斷連接時，KMS 金鑰的金鑰狀態為 `Unavailable`。若要修正無法使用的 KMS 金鑰，請[重新連接外部金鑰存放區](xks-connect-disconnect.md)。外部金鑰存放區重新連接之後，外部金鑰存放區中 KMS 金鑰的金鑰狀態會自動還原到其先前的狀態，例如 `Enabled` 或 `Disabled`。

  當 KMS 金鑰已排程刪除且處於等待期間時，KMS 金鑰的金鑰狀態為 `PendingDeletion`。正在等待刪除的 KMS 金鑰的金鑰狀態錯誤表示不應該刪除該金鑰，因為它正用於加密，或者需要它進行解密。若要重新啟用 KMS 金鑰，請取消已排程的刪除，然後[啟用金鑰](enabling-keys.md)。如需詳細資訊，請參閱[排程金鑰刪除](deleting-keys-scheduling-key-deletion.md)。

## 解密錯誤
<a name="fix-xks-decrypt"></a>

**例外狀況**：`KMSInvalidStateException`

當外部金鑰存放區中使用 KMS 金鑰的[解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)操作失敗時， 會 AWS KMS 傳回`KMSInvalidStateException`密碼編譯操作用於外部金鑰存放區上所有外部組態錯誤和連線狀態錯誤的標準。指出問題的錯誤訊息。

若要解密使用[雙重加密](keystore-external.md#concept-double-encryption)來加密的密文，外部金鑰管理器會首先使用外部金鑰來解密密文外層。然後使用 AWS KMS KMS AWS KMS 金鑰中的金鑰材料來解密加密文字的內層。外部金鑰管理器或 AWS KMS可拒絕無效或損毀的密文。

解密失敗時，`KMSInvalidStateException` 會伴隨下列錯誤訊息。它指出請求中的密文或選用的加密內容有問題。


|  | 
| --- |
| 外部金鑰存放區代理拒絕請求，因為指定的密文或其他已驗證的資料已損毀、遺失或無效。 | 
+ 當外部金鑰存放區代理或外部金鑰管理器報告加密文字或其加密內容無效時，通常表示傳送`Decrypt`請求中的加密文字或加密內容有問題 AWS KMS。對於 `Decrypt`操作， AWS KMS 會傳送與`Decrypt`請求中接收到的相同加密文字和加密內容給代理。

  此錯誤可能是由傳輸過程中的網路問題所引起，例如翻轉位。重試 `Decrypt` 請求。如果問題仍然存在，請確認密文沒有被更改或損壞。此外，請確認`Decrypt`請求中的加密內容與加密資料的請求中的加密內容 AWS KMS 相符。


|  | 
| --- |
| 外部金鑰存放區代理提交用於解密的密文或加密內容已損毀、遺失或無效。 | 
+ 當 AWS KMS 拒絕從代理收到的加密文字時，表示外部金鑰管理器或代理傳回無效或損毀的加密文字 AWS KMS。

  此錯誤可能是由傳輸過程中的網路問題所引起，例如翻轉位。重試 `Decrypt` 請求。如果問題仍然存在，請確認外部金鑰管理器是否正常運作，而且外部金鑰存放區代理不會在傳回給外部金鑰管理器之前變更從外部金鑰管理器收到的加密文字 AWS KMS。

## 外部金鑰錯誤
<a name="fix-external-key"></a>

[外部金鑰](keystore-external.md#concept-external-key)是外部金鑰管理器中的密碼編譯金鑰，可作為 KMS 金鑰的外部金鑰材料。 AWS KMS 無法直接存取外部金鑰。它必須要求外部金鑰管理器 (透過外部金鑰存放區代理) 使用外部金鑰來加密資料或解密密文。

在外部金鑰存放區中建立 KMS 金鑰時，您可以在其外部金鑰管理器中指定外部金鑰的 ID。您無法在建立 KMS 金鑰之後變更外部金鑰 ID。為了避免 KMS 金鑰發生問題，`CreateKey` 操作會要求外部金鑰存放區代理驗證外部金鑰的 ID 和組態。如果外部金鑰[不滿足](create-xks-keys.md#xks-key-requirements)與 KMS 金鑰搭配使用的要求，則 `CreateKey` 操作會失敗，並顯示可識別問題的例外狀況和錯誤訊息。

不過，建立 KMS 金鑰之後可能會發生問題。如果密碼編譯操作由於外部金鑰問題而失敗，則操作會失敗並傳回 `KMSInvalidStateException` 和指出問題的錯誤訊息。

### 外部金鑰的 CreateKey 錯誤
<a name="fix-external-key-create"></a>

**例外狀況**：`XksKeyAlreadyInUseException`、`XksKeyNotFoundException`、`XksKeyInvalidConfigurationException`

[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作會嘗試驗證您在 **External key ID** (外部金鑰 ID) (主控台) 或 `XksKeyId` (API) 參數中提供的外部金鑰的 ID 和屬性。此做法的設計目的在於在您嘗試搭配使用外部金鑰和 KMS 金鑰之前，提前偵測錯誤。

**使用中的外部金鑰** 

外部金鑰存放區中的每個 KMS 金鑰都必須使用不同的外部金鑰。當 `CreateKey` 識別出 KMS 金鑰的外部金鑰 ID (xKSKeyID) 在外部金鑰存放區中不唯一時，就會失敗並顯示 `XksKeyAlreadyInUseException`。

如果您為相同外部金鑰使用多個 ID，`CreateKey` 將無法識別重複內容。不過，具有相同外部金鑰的 KMS 金鑰無法互通，因為它們具有不同的 AWS KMS 金鑰材料和中繼資料。

**找不到外部金鑰** 

當外部金鑰存放區代理報告它無法使用 KMS 金鑰的外部金鑰 ID (xKSKeyID) 找到外部金鑰時，`CreateKey` 操作會失敗，並傳回 `XksKeyNotFoundException` 及下列錯誤訊息。


|  | 
| --- |
| 外部金鑰存放區代理拒絕了請求，因為它找不到外部金鑰。 | 

此錯誤可能發生的原因如下：
+ KMS 金鑰的外部金鑰 ID (`XksKeyId`) 可能無效。若要查找外部金鑰代理用來識別外部金鑰的 ID，請參閱外部金鑰存放區代理或外部金鑰管理器文件。
+ 可能已從外部金鑰管理器刪除外部金鑰。若要進行調查，請使用外部金鑰管理器工具。如果外部金鑰已永久刪除，請搭配 KMS 金鑰使用其他外部金鑰。如需外部金鑰的清單或要求，請參閱 [外部金鑰存放區中 KMS 金鑰的要求](create-xks-keys.md#xks-key-requirements)。

**未滿足外部金鑰要求**

當外部金鑰存放區代理報告外部金鑰[不符合](create-xks-keys.md#xks-key-requirements)與 KMS 金鑰搭配使用的要求時，`CreateKey` 操作會失敗，並傳回 `XksKeyInvalidConfigurationException` 及下列其中一個錯誤訊息。


|  | 
| --- |
| 外部金鑰的金鑰規格必須為 AES\_256。指定外部金鑰的金鑰規格為 {{<key-spec>}}。 | 
+ 外部金鑰必須是 256 位元對稱加密金鑰，金鑰規格為 AES\_256。如果指定的外部金鑰是不同的類型，請指定符合此要求的外部金鑰 ID。


|  | 
| --- |
| 外部金鑰的狀態必須為 ENABLED。指定外部金鑰的狀態為 {{<status>}}。 | 
+ 必須在外部金鑰管理器中啟用外部金鑰。如果指定的外部金鑰未啟用，請使用外部金鑰管理器工具來啟用它，或指定已啟用的外部金鑰。


|  | 
| --- |
| 外部金鑰的金鑰用途必須包括 ENCRYPT 和 DECRYPT。指定外部金鑰的金鑰用途是 <{{key-usage}}>。 | 
+ 外部金鑰必須設定為在外部金鑰管理器中進行加密和解密。如果指定的外部金鑰不包含這些操作，請使用外部金鑰管理器工具變更操作，或指定其他外部金鑰。

### 外部金鑰的密碼編譯操作錯誤
<a name="fix-external-key-crypto"></a>

**例外狀況**：`KMSInvalidStateException`

當外部金鑰存放區代理找不到與 KMS 金鑰相關聯的外部金鑰時，或外部金鑰[不滿足](create-xks-keys.md#xks-key-requirements)與 KMS 金鑰搭配使用的要求時，密碼編譯操作會失敗。

與建立 KMS 金鑰之前偵測到的外部金鑰問題相比，在密碼編譯操作期間偵測到的外部金鑰問題更難解決。您無法在建立 KMS 金鑰之後變更外部金鑰 ID。如果 KMS 金鑰尚未加密任何資料，您可以刪除 KMS 金鑰，然後使用不同的外部金鑰 ID 建立新金鑰。不過，任何其他 KMS 金鑰都無法解密使用 KMS 金鑰產生的加密文字，即使是具有相同外部金鑰的金鑰，因為金鑰會有不同的金鑰中繼資料和不同的 AWS KMS 金鑰材料。相反，盡可能使用外部金鑰管理器工具來解決外部金鑰問題。

當外部金鑰存放區代理報告外部金鑰問題時，密碼編譯操作會傳回 `KMSInvalidStateException` 以及可識別問題的錯誤訊息。

**找不到外部金鑰**

當外部金鑰存放區代理報告其無法使用 KMS 金鑰的外部金鑰 ID (xKSKeyID) 找到外部金鑰時，密碼編譯操作會傳回 `KMSInvalidStateException` 以及下列錯誤訊息。


|  | 
| --- |
| 外部金鑰存放區代理拒絕了請求，因為它找不到外部金鑰。 | 

此錯誤可能發生的原因如下：
+ KMS 金鑰的外部金鑰 ID (`XksKeyId`) 已不再有效。

  若要查找與 KMS 金鑰相關聯的外部金鑰 ID，[請檢視 KMS 金鑰的詳細資訊](identify-key-types.md#view-xks-key)。若要查找外部金鑰代理用來識別外部金鑰的 ID，請參閱外部金鑰存放區代理或外部金鑰管理器文件。

  AWS KMS 在外部金鑰存放區中建立 KMS 金鑰時， 會驗證外部金鑰 ID。不過，ID 可能會變得無效，特別是如果外部金鑰 ID 值是別名或可變名稱。您不能變更與現有 KMS 金鑰相關聯的外部金鑰 ID。若要解密使用 KMS 金鑰加密的任何密文，您必須將外部金鑰與現有的外部金鑰 ID 重新關聯。

  如果您尚未使用 KMS 金鑰加密資料，您可以使用有效的外部金鑰 ID 建立新的 KMS 金鑰。但是，如果您已使用 KMS 金鑰產生密文，即使使用相同的外部金鑰，也無法使用任何其他 KMS 金鑰來解密密文。
+ 可能已從外部金鑰管理器刪除外部金鑰。若要進行調查，請使用外部金鑰管理器工具。如果可能，請嘗試從外部金鑰管理器的複本或備份中[復原金鑰材料](fix-keystore.md#fix-keystore-recover-backing-key)。如果永久刪除外部金鑰，則使用關聯的 KMS 金鑰加密的任何密文都無法復原。

**外部金鑰組態錯誤**

當外部金鑰存放區代理報告外部金鑰[不符合](create-xks-keys.md#xks-key-requirements)與 KMS 金鑰搭配使用的要求時，密碼編譯操作會傳回 `KMSInvalidStateException` 及下列其中一個錯誤訊息。


|  | 
| --- |
| 外部金鑰存放區代理拒絕了請求，因為外部金鑰不支持請求的操作。 | 
+ 外部金鑰必須同時支援加密和解密。如果金鑰用途不包含加密和解密，請使用外部金鑰管理器工具來變更金鑰用途。


|  | 
| --- |
| 外部金鑰存放區代理拒絕了請求，因為外部金鑰管理器中未啟用外部金鑰。 | 
+ 外部金鑰必須已啟用並且可用於外部金鑰管理器。如果外部金鑰的狀態不是 `Enabled`，請使用外部金鑰管理器工具來啟用它。

## 代理問題
<a name="fix-xks-proxy"></a>

**例外狀況：**

 `CustomKeyStoreInvalidStateException` (`CreateKey`)、`KMSInvalidStateException` (密碼編譯操作)、`UnsupportedOperationException`、`XksProxyUriUnreachableException`、`XksProxyInvalidResponseException` (`CreateKey` 以外的管理操作))

外部金鑰存放區代理會媒介 AWS KMS 和外部金鑰管理器之間的所有通訊。它會將一般 AWS KMS 請求轉譯為外部金鑰管理器可以了解的格式。如果外部金鑰存放區代理不符合[AWS KMS 外部金鑰存放區代理 API 規格](https://github.com/aws/aws-kms-xksproxy-api-spec/)，或 無法正常運作或無法與 通訊 AWS KMS，您將無法在外部金鑰存放區中建立或使用 KMS 金鑰。

雖然許多錯誤提到外部金鑰存放區代理，因為它在外部金鑰存放區架構中起著關鍵作用，但這些問題可能源於外部金鑰管理器或外部金鑰。

本節中的問題與外部金鑰存放區代理的設計或操作問題有關。解決這些問題可能需要變更代理軟體。請諮詢您的代理管理員。為了協助診斷代理問題， AWS KMS 會提供 [XKS Proxy Text Client](https://github.com/aws-samples/aws-kms-xksproxy-test-client)，它是一個開放原始碼測試用戶端，可驗證您的外部金鑰存放區代理是否符合 [AWS KMS 外部金鑰存放區代理 API 規格](https://github.com/aws/aws-kms-xksproxy-api-spec/)。


|  | 
| --- |
| `CustomKeyStoreInvalidStateException`、`KMSInvalidStateException` 或 `XksProxyUriUnreachableException`外部金鑰存放區代理處於運作不佳狀態。如果您重複看到此訊息，請通知外部金鑰存放區代理管理員。 | 
+ 此錯誤表示外部金鑰存放區代理中存在操作問題或軟體錯誤。您可以找到產生每個錯誤的 AWS KMS API 操作的 CloudTrail 日誌項目。重試操作可能會解決此錯誤。但是，如果問題仍然存在，請通知您的外部金鑰存放區代理管理員。
+ 當外部金鑰存放區代理報告 (在 [GetHealthStatus](keystore-external.md#concept-proxy-apis) 回應中) 所有外部金鑰管理器執行個體為 `UNAVAILABLE` 時，嘗試建立或更新外部金鑰存放區會失敗，並顯示此例外狀況。如果此錯誤仍然存在，請參閱外部金鑰管理器文件。


|  | 
| --- |
| `CustomKeyStoreInvalidStateException`、`KMSInvalidStateException` 或 `XksProxyInvalidResponseException`AWS KMS 無法解譯來自外部金鑰存放區代理的回應。如果您重複看到此錯誤，請咨詢您的外部金鑰存放區代理管理員。 | 
+ AWS KMS 當代理傳回 AWS KMS 無法剖析或解譯的未定義回應時， 操作會產生此例外狀況。由於暫時的外部問題或偶發的網絡錯誤，偶爾會發生此錯誤。但是，如果它仍然存在，則可能表示外部金鑰存放區代理不符合 [AWS KMS 外部金鑰存放區代理 API 規格](https://github.com/aws/aws-kms-xksproxy-api-spec/)。通知您的外部金鑰存放區管理員或廠商。


|  | 
| --- |
| `CustomKeyStoreInvalidStateException`、`KMSInvalidStateException` 或 `UnsupportedOperationException`<br />外部金鑰存放區代理拒絕了請求，因為其不支援請求的密碼編譯操作。 | 
+ 外部金鑰存放區代理應支援 [AWS KMS 外部金鑰存放區代理 API 規格](https://github.com/aws/aws-kms-xksproxy-api-spec/)中定義的所有[代理 API](keystore-external.md#concept-proxy-apis)。此錯誤表示代理不支援與請求相關的操作。通知您的外部金鑰存放區管理員或廠商。

## 代理授權問題
<a name="fix-xks-authorization"></a>

**例外狀況**：`CustomKeyStoreInvalidStateException`、`KMSInvalidStateException`

某些外部金鑰存放區代理會實作使用其外部金鑰的授權需求。允許外部金鑰存放區代理 (但不是必需的) 來設計和實作授權方案，該方案允許特定使用者在特定條件下請求特定操作。例如，代理可能允許使用者使用特定的外部金鑰進行加密，但無法使用它進行解密。如需詳細資訊，請參閱[外部金鑰存放區代理授權 (選用)](authorize-xks-key-store.md#xks-proxy-authorization)。

Proxy 授權是以中繼資料為基礎，這些中繼資料 AWS KMS 包含在對 Proxy 的請求中。只有當請求來自 VPC 端點且呼叫者與 KMS 金鑰位於相同帳戶時，`awsSourceVpc` 和 `awsSourceVpce` 欄位才會包含在中繼資料中。

```
"requestMetadata": {
    "awsPrincipalArn": string,
    "awsSourceVpc": string, // optional
    "awsSourceVpce": string, // optional
    "kmsKeyArn": string,
    "kmsOperation": string,
    "kmsRequestId": string,
    "kmsViaService": string // optional
}
```

當代理因授權失敗而拒絕請求時，相關 AWS KMS 操作會失敗。 `CreateKey`會傳回 `CustomKeyStoreInvalidStateException`. AWS KMS cryptographic 操作會傳回 `KMSInvalidStateException`。兩者都使用下列錯誤訊息：


|  | 
| --- |
| 外部金鑰存放區代理拒絕存取該操作。確認使用者和外部金鑰都已獲得針對此操作的授權，然後再試一次請求。 | 
+ 若要解決錯誤，請使用外部金鑰管理器或外部金鑰存放區代理工具來確定授權失敗的原因。然後，更新導致未授權請求的程序，或使用外部金鑰存放區代理工具來更新授權政策。您無法在 AWS KMS中解決此錯誤。