全部產品
Search
文件中心

Key Management Service:應用接入常見問題

更新時間:Dec 18, 2025

本文介紹應用程式通過SDK接入時可能遇到的問題。

問題列表

訪問KMS執行個體時出現no such host或not known報錯

問題描述

  • 應用程式通過KMS執行個體SDK(Go)訪問KMS執行個體時:返回kst-xxx.cryptoservice.kms.aliyuncs.com: no such host

  • 應用程式通過KMS執行個體SDK(Java)訪問KMS執行個體時:返回kst-xxx.cryptoservice.kms.aliyuncs.com: nodename nor servname provided, or not known

問題原因

購買KMS執行個體後,該執行個體是您獨享的密鑰管理和憑據管理服務,僅可從您已配置關聯的VPC中訪問。

解決方案

  • 如果應用程式所在VPC和KMS執行個體在同一個地區,請將該VPC和KMS執行個體關聯。具體操作,請參見同地區多VPC訪問KMS執行個體

    關於KMS執行個體關聯了哪些VPC,請參見查看KMS執行個體詳情

  • 如果應用程式所在VPC和KMS執行個體在不同地區,請將該VPC和KMS執行個體所在VPC之間的網路打通。

通過應用存取點訪問KMS執行個體時,出現Forbidden.NoPermission報錯

問題描述

訪問KMS執行個體時,返回的錯誤描述或SDK異常訊息中包含:Forbidden.NoPermission : This operation is forbidden by permission system.

解決方案

應用存取點的權限原則中,RBAC許可權允許訪問資源中未配置要使用的密鑰或憑據的許可權。具體操作,請參見建立應用存取點

擷取憑據值時出現This operation for key-xxxxxx is forbidden by permission system報錯

問題描述

擷取憑據值時,KMS返回的錯誤描述或SDK異常訊息中包含:This operation for key-xxxxxx is forbidden by permission system

以下是KMS執行個體SDK(Java)異常資訊樣本:

擷取憑據值時報錯

問題原因

應用程式缺少使用該密鑰進行解密的許可權。

建立憑據時需要選擇同一個KMS執行個體下的祕密金鑰加密憑據值。應用程式向KMS請求擷取憑據時,需要使用對應的密鑰解密憑據值,因此應用程式不僅要具有使用憑據的許可權,還需要具有使用對應密鑰進行解密的許可權。

解決方案

  • 情境一:通過應用存取點AAP(ClientKey) 訪問KMS

    編輯應用存取點的權限原則,為應用程式增加使用密鑰解密的許可權。

    1. 登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊应用接入 > 接入点

    2. 單擊目標應用存取點名稱,進入应用接入点详情頁面。

    3. 單擊權限原則操作列的编辑,完成如下配置項的設定後,單擊更新

      • RBAC权限:增加勾選CryptoServiceKeyUser。

      • 允许访问的资源:在可选资源地區選取項目密鑰,單擊image.png表徵圖。或單擊已选资源後的加號表徵圖添加密鑰,格式為key/key id(例如key/key-hzz6xxxxxx)。

  • 情境二:通過RAM使用者的AccessKey或RAM角色訪問KMS

    編輯RAM權限原則,為應用程式增加使用密鑰解密的許可權。

    1. 登入RAM控制台

    2. 在左側導覽列,選擇許可權管理 > 權限原則

    3. 找到您的RAM使用者或RAM角色綁定的權限原則,單擊權限原則名稱。

    4. 策略內容頁簽,單擊修改策略內容,在Statement中增加如下指令碼後單擊繼續編輯基本資料,然後單擊確定

              {
                  "Effect": "Allow",
                  "Action": "kms:Decrypt",
                  "Resource": "acs:kms:${region}:${account}:key/keyId-example"
              }

      關於權限原則的更多資訊,請參見Key Management Service自訂權限原則參考

訪問或使用密鑰時出現Forbidden.KeyNotFound報錯

原因:通常是因為請求中指定的地區、密鑰ID或別名,與加密時使用的參數不符。

解決方案:確保解密操作所使用的地區、密鑰ID或別名,與加密時完全一致。

調用KMS介面時出現UnsupportedOperation報錯

  • 網路訪問配置錯誤

    • 原因:應用程式調用KMS執行個體中建立的密鑰進行密碼運算時,使用了阿里雲SDK。

    • 解決方案:

      1. 登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊资源 > 实例管理

      2. 在執行個體列表中,單擊目標執行個體ID,在詳情頁面的RD多账号地區,開啟公網訪問開關。

        說明

        當KMS執行個體共用給多個阿里雲帳號時,可針對每個帳號設定公網存取權限。

      3. 基本信息頁簽,查看公網地址。image

  • 密鑰類型使用錯誤

    • 原因:應用程式通過SDK調用密碼運算介面(EncryptDecryptGenerateDataKey)時,使用了服務密鑰。

    • 解決方案:應用程式進行密碼運算時,應直接使用使用者主要金鑰(CMK),而非由其他雲產品代管的服務密鑰。

  • 密鑰演算法與API不匹配

    • 情境一:加解密與資料密鑰產生

      • 調用產生資料密鑰GenerateDataKey介面時,使用者主要金鑰(CMK)的密鑰演算法為RSA、ECC非對稱演算法。

      • 解決方案:請確保使用者主要金鑰(CMK)的密鑰演算法是AES對稱演算法,且密鑰用途為ENCRYPT/DECRYPT

    • 情境二:簽名與驗簽

      • 調用計算簽名Sign或驗證簽名Verify介面時,使用者主要金鑰(CMK)的密鑰演算法為AES對稱密碼演算法。

      • 解決方案:請確保使用者主要金鑰(CMK)的密鑰演算法是RSA、ECC非對稱演算法,且密鑰用途為SIGN/VERIFY

訪問KMS執行個體時出現unable to find valid certification path to requested target報錯

可能原因一:下載CA認證時,未選擇正確的KMS執行個體

  1. 登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊资源 > 实例管理

  2. 实例管理頁面,單擊获取实例CA证书下的下载

  3. 获取实例CA证书對話方塊中選擇執行個體ID,單擊下载並妥善保管。

    CA認證下載後檔案名稱預設為PrivateKmsCA_kst-******.pem,後續會整合到SDK中用於驗證KMS執行個體服務的SSL認證是否真實有效。

可能原因二:SDK安裝包的版本不正確

建議您安裝最新版本的SDK,各SDK的開原始碼倉庫地址:

KMS執行個體的網域名稱無法解析

問題描述

在KMS執行個體所屬的VPC或已關聯的VPC中,應用無法訪問KMS執行個體的網域名稱。例如ping kst-hzz62****.cryptoservice.kms.aliyuncs.com,無法解析網域名稱,提示訊息中包含 "cannot resolve"。

解決方案

請您檢查伺服器的DNS配置是否為預設的100.100.2.136/100.100.2.138。詳細資料,請參見使用PrivateZone需要修改伺服器的DNS配置麼

應用訪問KMS執行個體時提示ClientKey口令不正確

問題描述

  • 通過KMS執行個體SDK(Java)訪問KMS執行個體時:返回java.io.IOException: keystore password was incorrect

  • 通過KMS執行個體SDK(PHP)訪問KMS執行個體時:返回Could not decrypt the privateKey of clientKey, the password is incorrect,or it is not a valid pkcs12

  • 通過KMS執行個體SDK(Go)訪問KMS執行個體時:返回panic: pkcs12: decryption password incorrect

  • 通過KMS執行個體SDK(Python)訪問KMS執行個體時:返回OpenSSL.crypto.Error: [('PKCS12 routines', '', 'mac verify failure')]

問題原因

ClientKey口令(password)不正確。

解決方案

  • ClientKey口令格式是否滿足要求,不滿足時您需要重新建立ClientKey。具體操作,請參見建立ClientKey

    ClientKey口令格式:8~64位,[0-9] [a-z] [A-Z] [~!@#$%^&*?_-] ,需要滿足兩種類型。

  • 如果通過檔案讀取ClientKey口令,口令檔案應該只是文字檔,只包含一行密碼內容。檔案內容不要包括分行符號,定位字元等不滿足密碼格式的特殊符號。

應用訪問KMS執行個體時返回HTTP 413狀態代碼

所有請求參數使用Protocol Buffers編碼後(即Request Body),內容長度不能超過3 MB,超過後服務端會拒絕處理並返回HTTP 413狀態代碼。

  • 加解密操作:建議單次使用對稱金鑰加解密的資料不超過6 KB,單次使用非對稱金鑰加解密的資料不超過1 KB,超過後請使用信封加密。

  • 簽名驗簽操作:簽名訊息較大時,建議您的應用在本地對訊息產生摘要後,再調用Sign/Verify介面進行簽名或驗簽。

應用訪問KMS執行個體時提示UnknownHostException

問題描述

應用程式通過KMS執行個體SDK(Java)訪問KMS執行個體時:返回Caused by: java.net.UnknownHostException: kst-hzz664da459rvtjtd****.cryptoservice.kms.aliyuncs.com

解決方案

  1. 請確認您應用的環境是否和KMS執行個體VPC網路打通。

    如果應用程式的VPC和KMS執行個體在同一地區,請將該VPC綁定到KMS執行個體。具體操作,請參見同地區多VPC訪問KMS執行個體。其他情境您可以參考如下方案。

    • 跨VPC互聯的解決方案

      您可以通過使用雲企業網CEN(Cloud Enterprise Network)、VPN網關、VPC對等串連或者私網串連(PrivateLink)這幾種方案實現VPC之間的私網互連。關於這幾種跨VPC互聯解決方案的特點、介紹以及配置方法,請參見VPC互連

    • VPC如何串連公網

      您可以通過ECS執行個體固定公網IP、Elastic IP Address、NAT Gateway或者負載平衡使Virtual Private Cloud中的雲資源可以訪問公網或被公網訪問。具體操作,請參見公網訪問

    • VPC如何串連IDC

      您可以通過VPN網關、Express Connect物理專線或Smart Access Gateway將本機資料中心和雲上專用網路打通,構建混合雲。具體操作,請參見VPC串連本機資料中心/其他雲

  2. 請確認是否正確配置了KMS VPC網域名稱解析設定。網域名稱解析設定,請參見內網DNS解析簡介

安卓端是否支援使用KMS的憑據管理功能

目前不支援安卓端使用憑據管理功能。

KMS的端點(Endpoint)無法訪問

通常是因為在使用SDK訪問KMS時,未啟用HTTPS協議。

為了確保您的資料安全,KMS的端點(Endpoint)僅支援HTTPS協議。因此在使用SDK訪問KMS的端點(Endpoint)時,請執行如下代碼確保KMS已啟用HTTPS協議。

req.setProtocol(ProtocolType.HTTPS);

本地IDC無法通過網域名稱訪問KMS執行個體

問題描述

本地IDC與阿里雲VPC進行網路打通,在不做任何配置情況下,本地IDC無法通過PrivateZone配置的網域名稱kms.aliyuncs.com訪問KMS執行個體。

解決方案

  1. 專線路由器上,把100.100.2.136/100.100.2.138這兩段路由允許存取,確保本地IDC可以ping通100.100.2.136/100.100.2.138。專線路由器配置問題可諮詢您的網路PDSA,也可參考相關文檔:雲上雲下網路互連通過物理專線實現本地IDC與雲上VPC互連添加和管理路由條目本地IDC通過專線使用訊息佇列RocketMQ版處理訊息

    重要

    如果您的IDC不是阿里雲企業網或專線網路,路由器配置需要諮詢您的供應商。

  2. 修改本地DNS主設定檔named.conf,將KMS網域名稱(kms.aliyuncs.com)轉寄給雲DNS來進行查詢。設定檔可參考如下:

    zone "kms.aliyuncs.com" { 
            type forward; 
            forwarders { 100.100.2.136;100.100.2.138;}; 
    };
    說明

    不同的DNS軟體在配置路由轉寄上略有差異,您可根據軟體操作指南完成配置。

ACK通過ack-secret-manager同步KMS憑據時提示QPS Limit Exceeded

問題原因

同步KMS憑據的調用規模較大時 ,會觸發KMS的限流策略,從而發生同步憑據失敗問題。

解決方案

ack-secret-manager的0.5.2版本已修複該問題,請升級至0.5.2及以上版本,建議您升級到最新版本。

通過專屬網關調用OpenAPI進行密碼運算時提示“MissingParamter”

問題描述

使用阿里雲SDK通過專屬網關調用OpenAPI進行密碼運算時,返回MissingParamter AParamter x-kms-acccesskeyid does not exist in http header or body "$430c76cd-******

問題原因

KMS執行個體的鏡像版本低於3.0.0版本。通過專屬網關調用OpenAPI進行密碼運算,KMS執行個體的鏡像版本需要為3.0.0及以上。

解決方案

請在实例管理頁面的執行個體詳情中查看鏡像版本,單擊升级版本升級KMS執行個體的鏡像版本。詳細介紹,請參見升級KMS執行個體的鏡像版本

第三方ISV通過專屬網關訪問KMS時,存在認證校正問題

為解決自我簽署憑證引起的認證校正問題,您可以為KMS執行個體開啟公網訪問,使第三方ISV通過共用網關訪問KMS,共用網關是從受信任的憑證授權單位擷取簽署憑證。

  1. 登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊资源 > 实例管理

  2. 在執行個體列表中,單擊目標執行個體ID,在詳情頁面的RD多账号地區,開啟公網訪問開關。

    說明

    當KMS執行個體共用給多個阿里雲帳號時,可針對每個帳號設定公網存取權限。

  3. 基本信息頁簽,查看公網地址。image