SignÚselo con un AWS SDKo CLI - AWS Key Management Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

SignÚselo con un AWS SDKo CLI

En los siguientes ejemplos de código, se muestra cómo utilizar Sign.

Los ejemplos de acciones son extractos de código de programas más grandes y deben ejecutarse en contexto. Puede ver esta acción en contexto en el siguiente ejemplo de código:

CLI
AWS CLI

Ejemplo 1: Para generar una firma digital para un mensaje

El siguiente sign ejemplo genera una firma criptográfica para un mensaje corto. El resultado del comando incluye un Signature campo codificado en base 64 que puede comprobar mediante el comando. verify

Debe especificar el mensaje que desee firmar y un algoritmo de firma compatible con la clave asimétricaKMS. Para obtener los algoritmos de firma de la KMS clave, utilice el describe-key comando.

En AWS CLI2.0, el valor del message parámetro debe estar codificado en Base64. O bien, puede guardar el mensaje en un archivo y usar el fileb:// prefijo, que indica la AWS CLIpara leer los datos binarios del archivo.

Antes de ejecutar este comando, sustituya el identificador de clave del ejemplo por un identificador de clave válido de su AWS account. El ID de clave debe representar una KMS clave asimétrica con un uso de clave de SIGN _VERIFY.

msg=(echo 'Hello World' | base64) aws kms sign \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --message fileb://UnsignedMessage \ --message-type RAW \ --signing-algorithm RSASSA_PKCS1_V1_5_SHA_256

Salida:

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Signature": "ABCDEFhpyVYyTxbafE74ccSvEJLJr3zuoV1Hfymz4qv+/fxmxNLA7SE1SiF8lHw80fKZZ3bJ...", "SigningAlgorithm": "RSASSA_PKCS1_V1_5_SHA_256" }

Para obtener más información sobre el uso de claves asimétricas KMS en AWS KMS, consulte Claves asimétricas en AWS KMSen el AWS Guía para desarrolladores de servicios de administración de claves.

Ejemplo 2: Para guardar una firma digital en un archivo (Linux ymacOs)

El siguiente sign ejemplo genera una firma criptográfica para un mensaje corto almacenado en un archivo local. El comando también obtiene la Signature propiedad de la respuesta, la decodifica en Base64 y la guarda en el archivo. ExampleSignature Puede usar el archivo de firma en un verify comando que verifique la firma.

El sign comando requiere un mensaje codificado en Base64 y un algoritmo de firma compatible con la clave asimétrica. KMS Para obtener los algoritmos de firma compatibles con la KMS clave, utilice el comando. describe-key

Antes de ejecutar este comando, sustituya el identificador de clave del ejemplo por un identificador de clave válido de su AWS account. El ID de clave debe representar una KMS clave asimétrica con un uso de clave de SIGN _VERIFY.

echo 'hello world' | base64 > EncodedMessage aws kms sign \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --message fileb://EncodedMessage \ --message-type RAW \ --signing-algorithm RSASSA_PKCS1_V1_5_SHA_256 \ --output text \ --query Signature | base64 --decode > ExampleSignature

Este comando no genera ninguna salida. Este ejemplo extrae la Signature propiedad de la salida y la guarda en un archivo.

Para obtener más información sobre el uso de KMS claves asimétricas en AWS KMS, consulte Claves asimétricas en AWS KMSen el AWS Guía para desarrolladores de servicios de administración de claves.

  • Para API obtener más información, consulte Iniciar sesión AWS CLI Referencia de comandos.

Java
SDKpara Java 2.x
nota

Hay más información. GitHub Consulta el ejemplo completo y aprende a configurarlo y a ejecutarlo en AWS Repositorio de ejemplos de código.

/** * Asynchronously signs and verifies data using AWS KMS. * * <p>The method performs the following steps: * <ol> * <li>Creates an AWS KMS key with the specified key spec, key usage, and origin.</li> * <li>Signs the provided message using the created KMS key and the RSASSA-PSS-SHA-256 algorithm.</li> * <li>Verifies the signature of the message using the created KMS key and the RSASSA-PSS-SHA-256 algorithm.</li> * </ol> * * @return a {@link CompletableFuture} that completes with the result of the signature verification, * {@code true} if the signature is valid, {@code false} otherwise. * @throws KmsException if any error occurs during the KMS operations. * @throws RuntimeException if an unexpected error occurs. */ public CompletableFuture<Boolean> signVerifyDataAsync() { String signMessage = "Here is the message that will be digitally signed"; // Create an AWS KMS key used to digitally sign data. CreateKeyRequest createKeyRequest = CreateKeyRequest.builder() .keySpec(KeySpec.RSA_2048) .keyUsage(KeyUsageType.SIGN_VERIFY) .origin(OriginType.AWS_KMS) .build(); return getAsyncClient().createKey(createKeyRequest) .thenCompose(createKeyResponse -> { String keyId = createKeyResponse.keyMetadata().keyId(); SdkBytes messageBytes = SdkBytes.fromString(signMessage, Charset.defaultCharset()); SignRequest signRequest = SignRequest.builder() .keyId(keyId) .message(messageBytes) .signingAlgorithm(SigningAlgorithmSpec.RSASSA_PSS_SHA_256) .build(); return getAsyncClient().sign(signRequest) .thenCompose(signResponse -> { byte[] signedBytes = signResponse.signature().asByteArray(); VerifyRequest verifyRequest = VerifyRequest.builder() .keyId(keyId) .message(SdkBytes.fromByteArray(signMessage.getBytes(Charset.defaultCharset()))) .signature(SdkBytes.fromByteBuffer(ByteBuffer.wrap(signedBytes))) .signingAlgorithm(SigningAlgorithmSpec.RSASSA_PSS_SHA_256) .build(); return getAsyncClient().verify(verifyRequest) .thenApply(verifyResponse -> { return (boolean) verifyResponse.signatureValid(); }); }); }) .exceptionally(throwable -> { throw new RuntimeException("Failed to sign or verify data", throwable); }); }
  • Para API obtener más información, consulte Iniciar sesión AWS SDK for Java 2.x APIReferencia.

Para obtener una lista completa de AWS SDKguías para desarrolladores y ejemplos de código, consulteUtilización AWS KMS con un AWS SDK. En este tema también se incluye información sobre cómo empezar y detalles sobre SDK las versiones anteriores.