¿Cómo soluciono los errores «SignatureDoesNotMatch» o «403 Forbidden» en las solicitudes de URL prefirmadas de Amazon S3?

4 minutos de lectura
0

He utilizado una URL prefirmada de Amazon Simple Storage Service (Amazon S3) para realizar solicitudes a mi bucket de Amazon S3 y se ha mostrado el mensaje de error «SignatureDoesNotMatch» o «403 Forbidden».

Descripción corta

Cuando genera una URL prefirmada, el cliente calcula una firma única para autenticar la solicitud. A continuación, Amazon S3 calcula una firma en función de los parámetros que el cliente envía en la solicitud HTTP y compara ambas firmas. Si las firmas no coinciden, recibirá el error «SignatureDoesNotMatch».

Resolución

Para solucionar este problema, compruebe los siguientes ajustes de configuración para su solicitud de URL prefirmada de Amazon S3.

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Solución de problemas de AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.

Validación del método HTTP

Cuando genera una URL prefirmada, asigna una acción HTTP a la URL. Asegúrese de que la acción que el cliente envía en la solicitud HTTP coincide con la acción HTTP de la URL. Por ejemplo, si asigna la acción GET a la URL, la acción HTTP de la solicitud también debe ser GET.

Comprobación de la clave de acceso secreta

Compruebe si la clave de acceso secreta que ha utilizado para generar la URL prefirmada tiene el estado Incorrecto, No válido o Desactivado. La clave de acceso secreta entra en uno de estos estados cuando se agregan caracteres que no coinciden o espacios incorrectos a la clave de acceso secreta. Compruebe que está utilizando la clave de acceso correcta para volver a generar la URL prefirmada.

Verificación del nombre del bucket y el nombre de la clave en la URL

Verifique que el nombre del bucket y el nombre del objeto sean correctos y coincidan con los que figuran en la generación de firmas de la URL. El uso de mayúsculas y minúsculas en el nombre también debe coincidir.

Verificación de los encabezados que se utilizan en la solicitud HTTP

Asegúrese de que los encabezados HTTP que utiliza para generar la firma coincidan con los encabezados que el cliente envía a S3 en la solicitud HTTP.

Además, asegúrese de que el valor del encabezado coincida con el valor generado durante el cálculo de la firma. 

Confirmación de que la región de AWS es correcta

Antes de enviar la URL prefirmada a S3, confirme que la región de AWS en la que ha generado la URL coincide con la región en la que se encuentra actualmente el bucket.

Ejecute la solicitud a la API GetBucketLocation para comprobar la región de un bucket de S3. También puede ejecutar el comando get-bucket-location de la AWS CLI:

$ aws s3api get-bucket-location --bucket example-bucket

Resultado de ejemplo:

{      
"LocationConstraint": "us-west-2"  
}

Comprobación del periodo de validez de la fecha del sistema

Si establece la fecha del sistema en una fecha futura después del periodo de validez de la firma digital, la firma aparecerá como vencida y no se realizará correctamente. Si establece la fecha del sistema en una fecha anterior al periodo de validez de la firma, la firma no es válida y se produce un error.

Información relacionada

Lista de códigos de error

¿Por qué la URL prefirmada de mi bucket de Amazon S3 prescribe antes de la fecha de vencimiento que he especificado?

Descarga y carga de objetos con URL prefirmadas

¿Cómo soluciono el error «La solicitud ha vencido» cuando intento acceder a un objeto de S3?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 meses