Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Vérification des signatures des messages Amazon SNS
Pour contrôler l'authenticité d'un message envoyé à votre point de terminaison HTTP par Amazon SNS, vous pouvez vérifier la signature du message. Dans deux cas, nous recommandons de vérifier l'authenticité du message. Le premier cas est celui où Amazon SNS envoie un message à votre point de terminaison HTTP indiquant que vous êtes abonné à une rubrique. Le second, lorsqu'Amazon SNS vous envoie un message de confirmation à votre point de terminaison HTTP lors de l'exécution des actions d'API Subscribe
ou Unsubscribe
.
Vous devez exécuter les opérations suivantes lors de la vérification des messages envoyés par Amazon SNS :
-
Utilisez toujours le protocole HTTPS lors de l'obtention du certificat à partir d'Amazon SNS.
-
Validez l'authenticité du certificat.
-
Vérifiez que le certificat a été reçu à partir d'Amazon SNS.
-
Si possible, utilisez l'un des kits SDK AWS pris en charge pour qu'Amazon SNS valide et vérifie les messages.
-
Vérifiez que les messages Amazon SNS ont bien été reçus par le
TopicArn
de votre choix.
Amazon SNS prend en charge deux versions de signature de message :
-
SignatureVersion
1 : Amazon SNS crée la signature sur la base du hachage SHA1 du message. -
SignatureVersion
2 : Amazon SNS crée la signature sur la base du hachage SHA256 du message.
Pour configurer la version de signature des messages sur les rubriques Amazon SNS
Par défaut, les rubriques Amazon SNS utilisent SignatureVersion
1. Pour choisir l'algorithme de hachage sur votre rubrique Amazon SNS, SignatureVersion
1 (SHA1) ou SignatureVersion
2 (SHA256), vous pouvez utiliser l’action d’API SetTopicAttributes
.
L'exemple de code suivant montre comment définir l'attribut de rubrique SignatureVersion
avec le AWS CLI :
aws sns set-topic-attributes \
--topic-arn arn:aws:sns:us-east-2:123456789012:MyTopic \
--attribute-name SignatureVersion \
--attribute-value 2
Pour vérifier la signature d'un message Amazon SNS lors de l'utilisation de demandes basées sur une requête HTTP
-
Extrayez les paires nom-valeur à partir du document JSON dans le corps de la requête HTTP POST envoyée par Amazon SNS à votre point de terminaison. Vous utiliserez les valeurs de certaines paires nom-valeur pour créer la chaîne de connexion. Lorsque vous vérifiez la signature d'un message Amazon SNS, il est essentiel de convertir les caractères de contrôle d'échappement en représentations des caractères d'origine dans
Message
et les valeursSubject
. Ces valeurs doivent être dans leur format d'origine lorsque vous les utilisez dans le cadre de la chaîne de connexion. Pour plus d'informations sur l'analyse du document JSON, consultez la page Étape 1 : Vérification de la disponibilité de votre point de terminaison pour traiter des messages Amazon SNS.La
SignatureVersion
vous indique la version de signature utilisée par Amazon SNS pour générer la signature du message. A partir de la version de la signature, vous pouvez déterminer les exigences requises pour la génération de la signature. Pour les notifications, Amazon SNS prend actuellement en charge la signature versions 1 et 2. Cette section indique les étapes de vérification d'une signature à l'aide de ces versions de signature. -
Obtenez le certificat X509 utilisé par Amazon SNS pour signer le message. La valeur
SigningCertURL
pointe vers l'emplacement du certificat X509 utilisé pour créer la signature numérique du message. Récupérez le certificat à partir de cet emplacement. -
Extrayez la clé publique à partir du certificat. La clé publique provenant du certificat spécifié par
SigningCertURL
est utilisée pour vérifier l'authenticité et l'intégrité du message. -
Déterminez le type du message. Le format de la chaîne de connexion dépend du type de message, qui est spécifié par la valeur
Type
. -
Créez la chaîne de connexion. La chaîne de connexion est une liste délimitée par des caractères de nouvelle ligne, qui est composée de paires nom-valeur provenant du message. Chaque paire nom-valeur est représentée par le nom, suivi d'un caractère de nouvelle ligne, suivi de la valeur et se terminant par un caractère de nouvelle ligne. Les paires nom-valeur doivent figurer dans l'ordre de tri par octet.
En fonction du type de message, la chaîne de connexion doit avoir les paires nom-valeur suivantes.
- Notification
-
Les messages de notification doivent contenir les paires nom-valeur suivantes :
Message MessageId Subject (if included in the message) Timestamp TopicArn Type
L'exemple suivant est une chaîne de connexion pour
Notification
.Message My Test Message MessageId 4d4dc071-ddbf-465d-bba8-08f81c89da64 Subject My subject Timestamp 2019-01-31T04:37:04.321Z TopicArn arn:aws:sns:us-east-2:123456789012:s4-MySNSTopic-1G1WEFCOXTC0P Type Notification
- SubscriptionConfirmation et UnsubscribeConfirmation
-
Les messages
SubscriptionConfirmation
etUnsubscribeConfirmation
doivent contenir les paires nom-valeur suivantes :Message MessageId SubscribeURL Timestamp Token TopicArn Type
L'exemple suivant est une chaîne de connexion pour
SubscriptionConfirmation
.Message My Test Message MessageId 3d891288-136d-417f-bc05-901c108273ee SubscribeURL https://sns.us-east-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-east-2:123456789012:s4-MySNSTopic-1G1WEFCOXTC0P&Token=
233...
Timestamp 2019-01-31T19:25:13.719Z Token233...
TopicArn arn:aws:sns:us-east-2:123456789012:s4-MySNSTopic-1G1WEFCOXTC0P Type SubscriptionConfirmation
-
Décodez la valeur
Signature
à partir du format Base64. Le message diffuse la signature dans la valeurSignature
, qui est codée en Base64. Avant de comparer la valeur de la signature avec la signature que vous avez calculée, assurez-vous que vous décodez la valeurSignature
en Base64 afin d'utiliser le même format pour comparer les valeurs. -
Générez la valeur de hachage dérivée du message Amazon SNS. Envoyez le message Amazon SNS au format canonique à l’algorithme de hachage qui a été utilisé pour générer la signature.
-
Si la
SignatureVersion
est 1, utilisez SHA1 comme algorithme de hachage. -
Si la
SignatureVersion
est 2, utilisez SHA256 comme algorithme de hachage.
-
-
Générez la valeur de hachage déclarée du message Amazon SNS. La valeur de hachage déclarée résulte de l'utilisation de la valeur de clé publique (à l'étape 3) pour déchiffrer la signature diffusée avec le message Amazon SNS.
-
Vérifiez l'authenticité et l'intégrité du message Amazon SNS. Comparez la valeur de hachage dérivée (à l'étape 7) avec la valeur de hachage déclarée (à l'étape 8). Si les valeurs sont identiques, le destinataire est sûr que le message n'a pas été modifié pendant son transfert et qu'il provient d'Amazon SNS. Si les valeurs ne sont pas identiques, le message n'est pas digne de confiance pour le destinataire.