Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Überprüfung der Signaturen von Amazon-Nachrichten SNS
Um die Echtheit einer von Amazon an Ihren HTTP Endpunkt gesendeten Nachricht zu überprüfenSNS, können Sie die Nachrichtensignatur überprüfen. Es gibt zwei Fälle, in denen wir empfehlen, die Echtheit der Nachricht zu überprüfen. Erstens, wenn Amazon eine Nachricht an Ihren HTTP Endpunkt SNS sendet, dass Sie ein Thema abonniert haben. Zweitens, wenn Amazon Ihnen nach der Ausführung der Subscribe
oder der Unsubscribe
API Aktionen eine Bestätigungsnachricht an Ihren HTTP Endpunkt SNS sendet.
Sie sollten bei der Überprüfung von Nachrichten, die von Amazon SNS gesendet wurden, wie folgt vorgehen:
-
Verwenden Sie HTTPS es immer, wenn Sie das Zertifikat von Amazon erhaltenSNS.
-
Überprüfen Sie die Authentizität des Zertifikats.
-
Stellen Sie sicher, dass das Zertifikat von Amazon erhalten wurdeSNS.
-
Verwenden Sie nach Möglichkeit eine der von Amazon unterstützten Optionen, AWS SDKs um Nachrichten SNS zu validieren und zu verifizieren.
-
Vergewissern Sie sich, dass die SNS Amazon-Nachrichten von Ihrem gewünschten Empfänger empfangen wurden
TopicArn
.
Amazon SNS unterstützt zwei Versionen der Nachrichtensignatur:
-
SignatureVersion
1: Amazon SNS erstellt die Signatur auf der Grundlage des SHA1Hashs der Nachricht. -
SignatureVersion
2: Amazon SNS erstellt die Signatur auf der Grundlage des SHA256Hashs der Nachricht.
So konfigurieren Sie die Nachrichtensignaturversion für SNS Amazon-Themen
Standardmäßig verwenden SNS Amazon-Themen SignatureVersion
1. Um den Hashing-Algorithmus für Ihr SNS Amazon-Thema auszuwählen, entweder SignatureVersion
1 (SHA1) oder SignatureVersion
2 (SHA256), können Sie die SetTopicAttributes
API Aktion verwenden.
Im folgenden Codebeispiel wird veranschaulicht, wie Sie das Themenattribut SignatureVersion
mit der AWS CLI festlegen:
aws sns set-topic-attributes \
--topic-arn arn:aws:sns:us-east-2:123456789012:MyTopic \
--attribute-name SignatureVersion \
--attribute-value 2
Um die Signatur einer SNS Amazon-Nachricht zu überprüfen, wenn HTTP abfragebasierte Anfragen verwendet werden
-
Extrahieren Sie die Name-Wert-Paare aus dem JSON Dokument im Hauptteil der HTTP POST Anfrage, die Amazon SNS an Ihren Endpunkt gesendet hat. Sie werden mit den Werten einiger Name-Wert-Paare die zu signierende Zeichenfolge erstellen. Wenn Sie die Signatur einer SNS Amazon-Nachricht überprüfen, ist es wichtig, dass Sie die maskierten Steuerzeichen in den
Subject
WertenMessage
und in ihren ursprünglichen Zeichendarstellungen konvertieren. Diese Werte müssen in ihren ursprünglichen Formaten vorliegen, wenn Sie sie als Teil der zu signierenden Zeichenfolge verwenden. Informationen zum Analysieren des JSON Dokuments finden Sie unter. Schritt 1: Stellen Sie sicher, dass Ihr Endpunkt bereit ist, SNS Amazon-Nachrichten zu verarbeitenDas
SignatureVersion
gibt Ihnen die Signaturversion an, die von Amazon verwendet wurdeSNS, um die Signatur der Nachricht zu generieren. Mit der Signaturversion können Sie die Anforderungen für das Erstellen der Signatur bestimmen. Für Benachrichtigungen unterstützt Amazon SNS derzeit die Signaturversionen 1 und 2. Dieser Abschnitt enthält die Schritte zum Überprüfen einer Signatur anhand dieser Signaturversionen. -
Besorgen Sie sich das X509-Zertifikat, mit dem SNS Amazon die Nachricht signiert hat. Der Wert
SigningCertURL
zeigt den Speicherort des X.509-Zertifikats, mit dem die digitale Signatur für die Nachricht erstellt wurde. Rufen Sie das Zertifikat von diesem Speicherort ab. -
Extrahieren Sie den öffentlichen Schlüssel aus dem Zertifikat. Der von
SigningCertURL
angegebene öffentliche Schlüssel aus dem Zertifikat wird zur Überprüfung von Authentizität und Integrität der Nachricht verwendet. -
Bestimmen des Nachrichtentyps. Das Format der zu signierenden Zeichenfolge hängt vom Nachrichtentyp ab, den der Wert
Type
bezeichnet. -
Erstellen Sie die zu signierende Zeichenfolge. Die zu signierende Zeichenfolge ist eine durch Zeilenumbruchzeichen getrennte Liste von spezifischen Name-Wert-Paaren aus der Nachricht. Jedes Name-Wert-Paar wird zuerst mit dem Namen, gefolgt von einem Zeilenumbruchzeichen, dann gefolgt vom Wert dargestellt und endet mit einem Zeilenumbruchzeichen. Die Name-Wert-Paare müssen in einer Byte-Sortierreihenfolge aufgelistet werden.
Je nach Nachrichtentyp muss die zu signierende Zeichenfolge die folgenden Name-Wert-Paare aufweisen:
- Benachrichtigung
-
Die Benachrichtigungen müssen die folgenden Name-Wert-Paare enthalten:
Message MessageId Subject (if included in the message) Timestamp TopicArn Type
Das folgende Beispiel ist eine zu signierende Zeichenfolge für eine
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 und UnsubscribeConfirmation
-
SubscriptionConfirmation
- undUnsubscribeConfirmation
-Nachrichten müssen die folgenden Name-Wert-Paare enthalten:Message MessageId SubscribeURL Timestamp Token TopicArn Type
Das folgende Beispiel ist eine zu signierende Zeichenfolge für eine
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
-
Dekodieren Sie den
Signature
-Wert aus dem Base64-Format. Die Nachricht stellt die Signatur imSignature
-Wert zu, der als Base64 kodiert ist. Bevor Sie den Signaturwert mit der berechneten Signatur vergleichen, stellen Sie sicher, dass Sie denSignature
-Wert aus dem Base64-Format decodieren, damit Sie die Werte im selben Format vergleichen. -
Generieren Sie den abgeleiteten Hashwert der SNS Amazon-Nachricht. Senden Sie die SNS Amazon-Nachricht im kanonischen Format an denselben Hash-Algorithmus, der zur Generierung der Signatur verwendet wurde.
-
Wenn der Wert 1
SignatureVersion
ist, verwenden Sie ihn SHA1als Hash-Algorithmus. -
Wenn der Wert 2
SignatureVersion
ist, verwenden Sie SHA256ihn als Hash-Algorithmus.
-
-
Generieren Sie den bestätigten Hashwert der SNS Amazon-Nachricht. Der bestätigte Hashwert ist das Ergebnis der Verwendung des Werts des öffentlichen Schlüssels (aus Schritt 3) zur Entschlüsselung der mit der SNS Amazon-Nachricht übermittelten Signatur.
-
Überprüfen Sie die Echtheit und Integrität der SNS Amazon-Nachricht. Vergleichen Sie den abgeleiteten Hash-Wert (aus Schritt 7) mit dem festgestellten Hash-Wert (aus Schritt 8). Wenn die Werte identisch sind, kann der Empfänger sicher sein, dass die Nachricht während der Übertragung nicht geändert wurde und dass die Nachricht von Amazon stammen mussSNS. Wenn die Werte nicht identisch sind, sollte der Empfänger der Nachricht nicht vertrauen.