應(yīng)用接入常見問題
本文介紹應(yīng)用程序通過SDK接入時可能遇到的問題。
問題列表
訪問KMS實例時出現(xiàn)no such host或not known報錯
問題描述
應(yīng)用程序通過KMS實例SDK(Go)訪問KMS實例時:返回
kst-xxx.cryptoservice.kms.aliyuncs.com: no such host
。應(yīng)用程序通過KMS實例SDK(Java)訪問KMS實例時:返回
kst-xxx.cryptoservice.kms.aliyuncs.com: nodename nor servname provided, or not known
。
問題原因
購買KMS實例后,該實例是您獨享的密鑰管理和憑據(jù)管理服務(wù),僅可從您已配置關(guān)聯(lián)的VPC中訪問。
解決方案
如果應(yīng)用程序所在VPC和KMS實例在同一個地域,請將該VPC和KMS實例關(guān)聯(lián)。具體操作,請參見同地域多VPC訪問KMS實例。
關(guān)于KMS實例關(guān)聯(lián)了哪些VPC,請參見查看KMS實例詳情。
如果應(yīng)用程序所在VPC和KMS實例在不同地域,請將該VPC和KMS實例所在VPC之間的網(wǎng)絡(luò)打通。具體操作,請參見應(yīng)用跨地域訪問KMS實例。
通過應(yīng)用接入點訪問KMS實例時,出現(xiàn)Forbidden.NoPermission報錯
問題描述
訪問KMS實例時,返回的錯誤描述或SDK異常消息中包含:Forbidden.NoPermission : This operation is forbidden by permission system.
解決方案
應(yīng)用接入點的權(quán)限策略中,RBAC權(quán)限和允許訪問資源中未配置要使用的密鑰或憑據(jù)的權(quán)限。具體操作,請參見創(chuàng)建應(yīng)用接入點。
獲取憑據(jù)值時出現(xiàn)This operation for key-xxxxxx is forbidden by permission system報錯
問題描述
獲取憑據(jù)值時,KMS返回的錯誤描述或SDK異常消息中包含:This operation for key-xxxxxx is forbidden by permission system
。
以下是KMS實例SDK(Java)異常信息示例:
問題原因
應(yīng)用程序缺少使用該密鑰進行解密的權(quán)限。
創(chuàng)建憑據(jù)時需要選擇同一個KMS實例下的密鑰加密憑據(jù)值。應(yīng)用程序向KMS請求獲取憑據(jù)時,需要使用對應(yīng)的密鑰解密憑據(jù)值,因此應(yīng)用程序不僅要具有使用憑據(jù)的權(quán)限,還需要具有使用對應(yīng)密鑰進行解密的權(quán)限。
解決方案
場景一:通過應(yīng)用接入點AAP(ClientKey) 訪問KMS
編輯應(yīng)用接入點的權(quán)限策略,為應(yīng)用程序增加使用密鑰解密的權(quán)限。
登錄密鑰管理服務(wù)控制臺,在頂部菜單欄選擇地域后,在左側(cè)導(dǎo)航欄單擊 。
單擊目標(biāo)應(yīng)用接入點名稱,進入應(yīng)用接入點詳情頁面。
單擊權(quán)限策略操作列的編輯,完成如下配置項的設(shè)置后,單擊更新。
RBAC權(quán)限:增加勾選CryptoServiceKeyUser。
允許訪問的資源:在可選資源區(qū)域選擇密鑰,單擊圖標(biāo)。或單擊已選資源后的圖標(biāo)添加密鑰,格式為key/key id(例如key/key-hzz6xxxxxx)。
場景二:通過RAM用戶的AccessKey或RAM角色訪問KMS
編輯RAM權(quán)限策略,為應(yīng)用程序增加使用密鑰解密的權(quán)限。
登錄RAM控制臺。
在左側(cè)導(dǎo)航欄,選擇
。找到您的RAM用戶或RAM角色綁定的權(quán)限策略,單擊權(quán)限策略名稱。
在策略內(nèi)容頁簽,單擊修改策略內(nèi)容,在
Statement
中增加如下腳本后單擊繼續(xù)編輯基本信息,然后單擊確定。{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "acs:kms:${region}:${account}:key/keyId-example" }
關(guān)于權(quán)限策略的更多信息,請參見密鑰管理服務(wù)自定義權(quán)限策略參考。
訪問或使用密鑰時出現(xiàn)Forbidden.KeyNotFound報錯
出現(xiàn)上述錯誤提示,通常是因為您訪問了錯誤的地域、密鑰ID或別名。
請您確保解密時訪問的地域、密鑰ID、別名與加密時一致。
調(diào)用KMS接口時出現(xiàn)UnsupportedOperation報錯
可能原因 | 解決方案 |
應(yīng)用程序調(diào)用KMS實例中創(chuàng)建的密鑰進行密碼運算時,使用了阿里云SDK。 | 請使用KMS實例SDK,調(diào)用您在KMS實例中創(chuàng)建的密鑰進行密碼運算。更多信息,請參見KMS實例SDK。 |
應(yīng)用程序通過SDK調(diào)用密碼運算接口(Encrypt、Decrypt或GenerateDataKey)時,使用了服務(wù)密鑰。 | 服務(wù)密鑰由云產(chǎn)品代您創(chuàng)建和管理,請您使用用戶主密鑰(CMK)。 |
調(diào)用生成數(shù)據(jù)密鑰GenerateDataKey接口時,用戶主密鑰(CMK)的密鑰算法為RSA、ECC或SM2非對稱算法。 | 請確保用戶主密鑰(CMK)的密鑰算法是AES或SM4對稱算法,且密鑰用途為ENCRYPT/DECRYPT。 |
調(diào)用計算簽名Sign或驗證簽名Verify接口時,用戶主密鑰(CMK)的密鑰算法為AES或SM4對稱密碼算法。 | 請確保用戶主密鑰(CMK)的密鑰算法是RSA、ECC或SM2非對稱算法,且密鑰用途為SIGN/VERIFY。 |
訪問KMS實例時出現(xiàn)unable to find valid certification path to requested target報錯
可能原因一:下載CA證書時,未選擇正確的KMS實例
登錄密鑰管理服務(wù)控制臺,在頂部菜單欄選擇地域后,在左側(cè)導(dǎo)航欄單擊 。
在實例管理頁面,單擊獲取實例CA證書下的下載。
在獲取實例CA證書對話框中選擇實例ID,單擊下載并妥善保管。
CA證書下載后文件名默認(rèn)為PrivateKmsCA_kst-******.pem,后續(xù)會集成到SDK中用于驗證KMS實例服務(wù)的SSL證書是否真實有效。
可能原因二:SDK安裝包的版本不正確
建議您安裝最新版本的SDK,各SDK的開源代碼倉庫地址:
KMS實例的域名無法解析
問題描述
在KMS實例所屬的VPC或已關(guān)聯(lián)的VPC中,應(yīng)用無法訪問KMS實例的域名。例如ping kst-hzz62****.cryptoservice.kms.aliyuncs.com
,無法解析域名,提示消息中包含 "cannot resolve"。
解決方案
請您檢查服務(wù)器的DNS配置是否為默認(rèn)的100.100.2.136/100.100.2.138。詳細信息,請參見使用PrivateZone需要修改服務(wù)器的DNS配置么。
應(yīng)用訪問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口令格式是否滿足要求,不滿足時您需要重新創(chuàng)建ClientKey。具體操作,請參見創(chuàng)建ClientKey。
ClientKey口令格式:8~64位,[0-9] [a-z] [A-Z] [~!@#$%^&*?_-] ,需要滿足兩種類型。
如果通過文件讀取ClientKey口令,口令文件應(yīng)該只是文本文件,只包含一行密碼內(nèi)容。文件內(nèi)容不要包括換行符,制表符等不滿足密碼格式的特殊符號。
應(yīng)用訪問KMS實例時返回HTTP 413狀態(tài)碼
所有請求參數(shù)使用Protocol Buffers編碼后(即Request Body),內(nèi)容長度不能超過3 MB,超過后服務(wù)端會拒絕處理并返回HTTP 413狀態(tài)碼。
加解密操作:建議單次使用對稱密鑰加解密的數(shù)據(jù)不超過6 KB,單次使用非對稱密鑰加解密的數(shù)據(jù)不超過1 KB,超過后請使用信封加密。
簽名驗簽操作:簽名消息較大時,建議您的應(yīng)用在本地對消息生成摘要后,再調(diào)用Sign/Verify接口進行簽名或驗簽。
應(yīng)用訪問KMS實例時提示UnknownHostException
問題描述
應(yīng)用程序通過KMS實例SDK(Java)訪問KMS實例時:返回Caused by: java.net.UnknownHostException: kst-hzz664da459rvtjtd****.cryptoservice.kms.aliyuncs.com
。
解決方案
請確認(rèn)您應(yīng)用的環(huán)境是否和KMS實例VPC網(wǎng)絡(luò)打通。
如果應(yīng)用程序的VPC和KMS實例在同一地域,請將該VPC綁定到KMS實例。具體操作,請參見同地域多VPC訪問KMS實例。其他場景您可以參考如下方案。
跨VPC互聯(lián)的解決方案
您可以通過使用云企業(yè)網(wǎng)CEN(Cloud Enterprise Network)、VPN網(wǎng)關(guān)、VPC對等連接或者私網(wǎng)連接(PrivateLink)這幾種方案實現(xiàn)VPC之間的私網(wǎng)互通。關(guān)于這幾種跨VPC互聯(lián)解決方案的特點、介紹以及配置方法,請參見跨VPC互聯(lián)概述。
VPC如何連接公網(wǎng)
您可以通過ECS實例固定公網(wǎng)IP、彈性公網(wǎng)IP、NAT網(wǎng)關(guān)或者負(fù)載均衡使專有網(wǎng)絡(luò)VPC中的云資源可以訪問公網(wǎng)或被公網(wǎng)訪問。具體操作,請參見連接公網(wǎng)概述。
VPC如何連接IDC
您可以通過VPN網(wǎng)關(guān)、高速通道物理專線或智能接入網(wǎng)關(guān)將本地數(shù)據(jù)中心和云上專有網(wǎng)絡(luò)打通,構(gòu)建混合云。具體操作,請參見連接本地IDC。
請確認(rèn)是否正確配置了KMS VPC域名解析設(shè)置。域名解析設(shè)置,請參見內(nèi)網(wǎng)DNS解析簡介。
安卓端是否支持使用KMS的憑據(jù)管理功能
目前不支持安卓端使用憑據(jù)管理功能。
KMS的端點(Endpoint)無法訪問
通常是因為在使用SDK訪問KMS時,未啟用HTTPS協(xié)議。
為了確保您的數(shù)據(jù)安全,KMS的端點(Endpoint)僅支持HTTPS協(xié)議。因此在使用SDK訪問KMS的端點(Endpoint)時,請執(zhí)行如下代碼確保KMS已啟用HTTPS協(xié)議。
req.setProtocol(ProtocolType.HTTPS);
本地IDC無法通過域名訪問KMS實例
問題描述
本地IDC與阿里云VPC進行網(wǎng)絡(luò)打通,在不做任何配置情況下,本地IDC無法通過PrivateZone配置的域名kms.aliyuncs.com訪問KMS實例。
解決方案
在專線路由器上,把100.100.2.136/100.100.2.138這兩段路由放行,確保本地IDC可以ping通100.100.2.136/100.100.2.138。專線路由器配置問題可咨詢您的網(wǎng)絡(luò)PDSA,也可參考相關(guān)文檔:使用云企業(yè)網(wǎng)實現(xiàn)同地域云上云下網(wǎng)絡(luò)互通(企業(yè)版)、通過物理專線實現(xiàn)本地IDC與云上VPC互通、添加和管理路由條目、本地IDC通過專線使用消息隊列RocketMQ版處理消息。
重要如果您的IDC不是阿里云企業(yè)網(wǎng)或?qū)>€網(wǎng)絡(luò),路由器配置需要咨詢您的供應(yīng)商。
修改本地DNS主配置文件named.conf,將KMS域名(kms.aliyuncs.com)轉(zhuǎn)發(fā)給云DNS來進行查詢。配置文件可參考如下:
zone "kms.aliyuncs.com" { type forward; forwarders { 100.100.2.136;100.100.2.138;}; };
說明不同的DNS軟件在配置路由轉(zhuǎn)發(fā)上略有差異,您可根據(jù)軟件操作指南完成配置。
ACK通過ack-secret-manager同步KMS憑據(jù)時提示QPS Limit Exceeded
問題原因
同步KMS憑據(jù)的調(diào)用規(guī)模較大時 ,會觸發(fā)KMS的限流策略,從而發(fā)生同步憑據(jù)失敗問題。
解決方案
ack-secret-manager
的0.5.2版本已修復(fù)該問題,請升級至0.5.2及以上版本,建議您升級到最新版本。