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 unSignature
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 elfileb://
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 laSignature
propiedad de la respuesta, la decodifica en Base64 y la guarda en el archivo. ExampleSignature Puede usar el archivo de firma en unverify
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.