Este tema describe los problemas más comunes cuando una aplicación utiliza un SDK para acceder a una instancia de Key Management Service (KMS).
Lista de problemas
The "no such host" or "not known" error occurs when you access a KMS instance
The "Forbidden.KeyNotFound" error occurs when you access or use a key
The "UnsupportedOperation" error occurs when you call a KMS API operation
An "Incorrect ClientKey password" error occurs when you access a KMS instance
An HTTP 413 status code is returned when an application accesses a KMS instance
Is the secret management feature of KMS supported on Android?
An on-premises data center cannot access a KMS instance by its domain name
The "QPS Limit Exceeded" error occurs when ACK syncs KMS secrets by using ack-secret-manager
Error 'no such host' o 'not known'
Problema
Cuando una aplicación usa el SDK de instancias de KMS para Go con el fin de acceder a una instancia de KMS, se devuelve el siguiente error:
kst-xxx.cryptoservice.kms.aliyuncs.com: no such host.Cuando una aplicación usa el SDK de instancias de KMS para Java con el fin de acceder a una instancia de KMS, se devuelve el siguiente error:
kst-xxx.cryptoservice.kms.aliyuncs.com: nodename nor servname provided, or not known.
Causa
Una instancia de KMS es un servicio dedicado de gestión de claves y secretos. Solo se puede acceder a ella desde una Virtual Private Cloud (VPC) asociada.
Solución
-
Si la VPC donde se ejecuta su aplicación y la instancia de KMS están en la misma región, asocie la VPC con la instancia de KMS. Para obtener más información, consulte Access a KMS instance from multiple VPCs in the same region.
Para comprobar qué VPC están asociadas con su instancia de KMS, consulte View KMS instance details.
Si la VPC donde se ejecuta su aplicación y la instancia de KMS están en regiones distintas, establezca una conexión de red entre ambas VPC.
Error 'Forbidden.NoPermission' al usar un AAP
Problema
Al acceder a una instancia de KMS, la descripción del error o el mensaje de excepción del SDK contiene lo siguiente: Forbidden.NoPermission : This operation is forbidden by permission system.
Solución
Este error ocurre porque la política de permisos del application access point (AAP) no otorga los permisos obligatorios de clave o secreto en RBAC Permissions y Accessible Resources. Para obtener más información, consulte Create an application access point.
Error '...forbidden by permission system' al recuperar un secreto
Problema
Al recuperar el valor de un secreto, la descripción del error o el mensaje de excepción del SDK que devuelve KMS contiene lo siguiente: This operation for key-xxxxxx is forbidden by permission system.
A continuación se muestra un ejemplo de mensaje de excepción del SDK de instancias de KMS para Java:
Connected to the target VM, address: '127.0.xxx', transport: 'socket'
Exception in thread "main" com.aliyun.tea.TeaException Create breakpoint : This operation for key-hzz6xxx xxx is forbidden by permission system.
at com.aliyun.dkms.gcs.openapi.Client.doRequest(Client.java:159)
at com.aliyun.dkms.gcs.sdk.Client.getSecretValueWithOptions(Client.java:190)
at com.aliyun.dkms.gcs.sdk.Client.getSecretValue(Client.java:213)
at com.yqn.center.user.config.RdsSecretSampleCode.main(RdsSecretSampleCode.java:209)
Disconnected from the target VM, address: '127.0.xxx', transport: 'socket'
Process finished with exit code 1
Causa
Su aplicación no tiene permiso para usar la clave de descifrado.
Al crear un secreto, usted selecciona una clave dentro de la misma instancia de KMS para el cifrado. Para recuperar el secreto, su aplicación necesita permiso tanto para acceder al secreto como para usar la clave correspondiente en el descifrado.
Solución
-
Escenario 1: Acceso a KMS mediante un application access point (AAP) con una ClientKey
Edite la política de permisos del AAP para otorgar a la aplicación el permiso de uso de la clave para descifrar.
Inicie sesión en la consola de Key Management Service. En la barra de navegación superior, seleccione una región. En el panel de navegación izquierdo, elija .
Haga clic en el nombre del AAP de destino para ir a la página Details.
-
En la columna Actions de la política de permisos, haga clic en Modify. Configure los siguientes parámetros y haga clic en Update.
RBAC Permissions: Seleccione CryptoServiceKeyUser.
Accessible Resources: En la sección Available Resources, seleccione la clave y haga clic en el icono
. También puede hacer clic en el icono
, junto a Selected Resources, para agregar una clave con el formato key/key_id. Por ejemplo:key/key-hzz6xxxxxx.
-
Escenario 2: Acceso a KMS mediante el par de AccessKey de un usuario de RAM o al asumir un rol de RAM
Edite la política de permisos de RAM para otorgar a la aplicación el permiso de uso de la clave para descifrar.
Inicie sesión en la consola de RAM.
En el panel de navegación izquierdo, elija Permissions > Policies.
Busque la política de permisos adjunta a su usuario o rol de RAM y haga clic en el nombre de la política.
-
En la pestaña Policy Document, haga clic en Modify Policy Document. Agregue el siguiente script a la sección
Statementy haga clic en Continue to edit basic information.{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "acs:kms:${region}:${account}:key/keyId-example" }Para obtener más información sobre las políticas de permisos, consulte Custom permission policies for Key Management Service.
Error 'Forbidden.KeyNotFound'
Causa: En la mayoría de los casos, la región, el identificador de clave o el alias especificados en la solicitud no coinciden con los utilizados para el cifrado.
Solución: Asegúrese de que la región, el identificador de clave o el alias usados para el descifrado coincidan con los empleados en el cifrado.
Error 'UnsupportedOperation'
-
Configuración incorrecta del acceso a la red
Causa: Su aplicación usa un SDK estándar de Alibaba Cloud, en lugar de un SDK específico de KMS, para ejecutar operaciones criptográficas con una clave de una instancia de KMS.
-
Solución:
Inicie sesión en la consola de Key Management Service. En la barra de navegación superior, seleccione una región. En el panel de navegación izquierdo, elija .
-
En la lista de instancias, haga clic en el identificador de la instancia de destino. En la página de detalles, active el interruptor Public Network Access en la sección RD Multi-Account.
NotaSi varias cuentas de Alibaba Cloud comparten una instancia de KMS, puede establecer permisos de acceso a la red pública para cada cuenta.
En la pestaña Basic Information de la página de detalles de la instancia, busque el Public Endpoint. Este endpoint aparece después de habilitar el acceso a la red pública y tiene un formato similar a
kms.cn-hangzhou.aliyuncs.com.
-
Tipo de clave incorrecto
Causa: Su aplicación usa una clave de servicio cuando invoca una operación de API criptográfica mediante un SDK, como Encrypt, Decrypt o GenerateDataKey.
Solución: Para las operaciones criptográficas, use directamente una clave maestra del cliente (CMK) y no una clave de servicio gestionada por otro servicio en la nube.
-
Desajuste entre el algoritmo de la clave y la API
-
Escenario 1: Cifrado, descifrado y generación de claves de datos
Al invocar la operación GenerateDataKey, el algoritmo de la clave maestra del cliente (CMK) es asimétrico, como RSA, ECC .
Solución: Asegúrese de que el algoritmo de la CMK sea simétrico, como AES , y de que el uso de la clave sea ENCRYPT/DECRYPT.
-
Escenario 2: Firma y verificación
-
Error 'Unable to find valid certification path'
Posible causa 1: Seleccionó el certificado de CA de una instancia de KMS incorrecta
Inicie sesión en la consola de Key Management Service. En la barra de navegación superior, seleccione una región. En el panel de navegación izquierdo, elija .
En la página Instances, haga clic en Download en la columna Instance CA Certificate.
-
En el cuadro de diálogo Instance CA Certificate, seleccione el identificador de la instancia, haga clic en Download y guarde el certificado en una ubicación segura.
De forma predeterminada, el certificado de CA descargado se llama PrivateKmsCA_kst-.pem. Puede integrar este certificado en el SDK para verificar la autenticidad y validez del certificado SSL del servicio de la instancia de KMS.
Posible causa 2: Se instaló una versión incorrecta del SDK
Se recomienda instalar la versión más reciente del SDK. A continuación se muestran las direcciones de los repositorios de código abierto de los SDK:
-
SDK de instancias de KMS para Java
NotaLa dependencia tea debe ser de la versión 1.2.3 o posterior.
SDK de instancias de KMS para Python 3, SDK de instancias de KMS para Python 2
No se puede resolver el nombre de dominio de la instancia de KMS
Problema
Una aplicación no puede acceder al nombre de dominio de la instancia de KMS desde la VPC a la que pertenece dicha instancia ni desde una VPC asociada. Por ejemplo, el comando ping kst-hzz62****.cryptoservice.kms.aliyuncs.com no resuelve el nombre de dominio y el mensaje devuelto contiene "cannot resolve".
Solución
Compruebe si la configuración de DNS de su servidor utiliza los servidores DNS predeterminados de Alibaba Cloud: 100.100.2.136 y 100.100.2.138. Para obtener más información, consulte Do I need to modify the DNS configuration of the server to use PrivateZone?.
Error 'Incorrect ClientKey password'
Problema
Cuando usa el SDK de instancias de KMS para Java con el fin de acceder a una instancia de KMS, se devuelve el siguiente error:
java.io.IOException: keystore password was incorrect.Cuando usa el SDK de instancias de KMS para PHP con el fin de acceder a una instancia de KMS, se devuelve el siguiente error:
Could not decrypt the privateKey of clientKey, the password is incorrect,or it is not a valid pkcs12.Cuando usa el SDK de instancias de KMS para Go con el fin de acceder a una instancia de KMS, se devuelve el siguiente error:
panic: pkcs12: decryption password incorrect.Cuando usa el SDK de instancias de KMS para Python con el fin de acceder a una instancia de KMS, se devuelve el siguiente error:
OpenSSL.crypto.Error: [('PKCS12 routines', '', 'mac verify failure')].
Causa
La contraseña especificada para la ClientKey es incorrecta.
Solución
-
Compruebe si la contraseña de la ClientKey cumple con los requisitos de formato. De lo contrario, deberá crear una nueva ClientKey. Para obtener más información, consulte Create a ClientKey.
La contraseña de una ClientKey debe tener entre 8 y 64 caracteres e incluir como mínimo dos de los siguientes tipos: dígitos (0-9), letras minúsculas (a-z), letras mayúsculas (A-Z) y caracteres especiales (
~!@#$%^&*?_-). Si lee la contraseña de la ClientKey desde un archivo, asegúrese de que sea un archivo de texto sin formato que contenga únicamente una línea con la contraseña. El archivo no debe incluir caracteres innecesarios, como saltos de línea o tabulaciones.
Código de estado HTTP 413
El cuerpo de la solicitud no puede superar los 3 MB después de codificarse con Protocol Buffers. Las solicitudes que exceden este límite se rechazan con un código de estado HTTP 413.
Cifrado y descifrado: Se recomienda no superar los 6 KB de datos por operación con claves simétricas, ni 1 KB con claves asimétricas. Para volúmenes mayores, utilice el cifrado de sobre.
Firma y verificación: Si el mensaje por firmar es grande, se recomienda que su aplicación genere un resumen del mensaje de forma local. Después, invoque la operación
SignoVerifypara firmar o verificar dicho resumen.
Error 'UnknownHostException'
Problema
Cuando su aplicación usa el SDK de instancias de KMS para Java con el fin de acceder a una instancia de KMS, se devuelve el siguiente error: Caused by: java.net.UnknownHostException: kst-hzz664da459rvtjtd****.cryptoservice.kms.aliyuncs.com.
Solución
-
Compruebe que el entorno de su aplicación tenga conectividad de red con la VPC de la instancia de KMS.
Si la VPC de su aplicación y la instancia de KMS están en la misma región, asocie la VPC con la instancia de KMS. Para obtener más información, consulte Access a KMS instance from multiple VPCs in the same region. Para otros escenarios, consulte las soluciones siguientes.
-
Cross-VPC interconnection solutions
Puede utilizar Cloud Enterprise Network (CEN), VPN Gateway, una conexión de emparejamiento de VPC o PrivateLink para habilitar la comunicación privada entre VPC. Para conocer las funciones y la configuración de estas soluciones, consulte VPC interconnection.
-
Connecting a VPC to the internet
Mediante una dirección IP pública estática de una instancia de ECS, una Elastic IP Address, un NAT Gateway o un Server Load Balancer (SLB), los recursos en la nube de una VPC pueden acceder a Internet o recibir conexiones desde esta red. Para obtener más información, consulte Public network access.
-
Connecting a VPC to an on-premises data center
Con un VPN Gateway, un circuito de Express Connect o un Smart Access Gateway, puede conectar su centro de datos local a una VPC en la nube y construir una nube híbrida. Para obtener más información, consulte Connect a VPC to an on-premises data center or another cloud.
-
Asegúrese de que la resolución del nombre de dominio de la VPC de KMS esté configurada correctamente. Para obtener información sobre los ajustes de resolución de DNS, consulte Introduction to internal DNS resolution.
¿Se admite la gestión de secretos de KMS en Android?
No. Actualmente, la función de gestión de secretos no es compatible con Android.
No se puede acceder al endpoint de KMS
Este problema suele ocurrir porque no se habilitó el protocolo HTTPS al usar un SDK para acceder a KMS.
Para garantizar la seguridad de los datos, los endpoints de KMS solo admiten el protocolo HTTPS. Cuando utilice un SDK para acceder a un endpoint de KMS, ejecute el siguiente código y asegúrese de que HTTPS esté habilitado para KMS.
req.setProtocol(ProtocolType.HTTPS);
Un centro de datos local no puede acceder a la instancia de KMS
Problema
Un centro de datos local está conectado a una VPC de Alibaba Cloud. Sin ninguna configuración adicional, el centro de datos local no puede acceder a una instancia de KMS mediante el nombre de dominio kms.aliyuncs.com configurado en PrivateZone.
Solución
-
En el router de Express Connect, permita los segmentos de ruta 100.100.2.136 y 100.100.2.138 para asegurar que el centro de datos local pueda hacer ping a 100.100.2.136 y 100.100.2.138. Si tiene dudas sobre la configuración del router de Express Connect, consulte a su arquitecto de soluciones de red o revise los siguientes documentos: Cloud-to-on-premises network interconnection, Connect an on-premises data center to a VPC over an Express Connect circuit, Add and manage route entries y Process messages from an on-premises data center by using Message Queue for Apache RocketMQ over an Express Connect circuit.
ImportanteSi su centro de datos local no está conectado mediante Alibaba Cloud CEN o un circuito de Express Connect, comuníquese con su proveedor de red para configurar el router.
-
Modifique el archivo de configuración principal del DNS local, named.conf, para reenviar las consultas DNS del nombre de dominio de KMS (kms.aliyuncs.com) a Alibaba Cloud DNS y así resolverlas. A continuación se muestra un ejemplo de configuración:
zone "kms.aliyuncs.com" { type forward; forwarders { 100.100.2.136;100.100.2.138;}; };NotaLa configuración del reenvío de rutas varía según el software de DNS. Para obtener más información, consulte la documentación de su software de DNS.
Error 'QPS Limit Exceeded' cuando ACK sincroniza secretos
Causa
Sincronizar una gran cantidad de secretos de KMS puede activar la política de limitación del servicio y provocar que la sincronización falle.
Solución
Este problema se corrigió en la versión 0.5.2 de ack-secret-manager. Actualice a la versión 0.5.2 o posterior.
Error 'MissingParameter' en la puerta de enlace dedicada
Problema
Cuando usa un SDK de Alibaba Cloud para invocar una operación de OpenAPI con fines criptográficos a través de una puerta de enlace dedicada, se devuelve el siguiente error: MissingParamter AParamter x-kms-acccesskeyid does not exist in http header or body "$430c76cd-******.
Causa
La versión de la imagen de la instancia de KMS es anterior a la 3.0.0. Para invocar operaciones de OpenAPI con fines criptográficos mediante una puerta de enlace dedicada, la versión de la imagen de la instancia de KMS debe ser 3.0.0 o posterior.
Solución
En la página Instances, compruebe la versión de la imagen en los detalles de la instancia. Haga clic en Upgrade para actualizar la versión de la imagen de la instancia de KMS. Para obtener más información, consulte Upgrade the image version of a KMS instance.
Problemas de validación de certificados de ISV de terceros
Habilitar el acceso público permite que el ISV de terceros se conecte a través de la puerta de enlace compartida, la cual utiliza un certificado firmado por una autoridad certificadora (CA) de confianza.
Inicie sesión en la consola de Key Management Service. En la barra de navegación superior, seleccione una región. En el panel de navegación izquierdo, elija .
-
En la lista de instancias, haga clic en el identificador de la instancia de destino. En la página de detalles, active el interruptor Public Network Access en la sección RD Multi-Account.
NotaSi varias cuentas de Alibaba Cloud comparten una instancia de KMS, puede establecer permisos de acceso a la red pública para cada cuenta.
En la pestaña Basic Information de la página de detalles de la instancia, busque el Public Endpoint. Este endpoint aparece después de habilitar el acceso a la red pública y tiene un formato similar a
kms.cn-hangzhou.aliyuncs.com.