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üfen der Signaturen von Amazon-SNS-Nachrichten
Um die Echtheit einer Nachricht zu überprüfen, die von Amazon SNS an Ihren HTTP-Endpunkt gesendet wurde, können Sie die Nachrichtensignatur heranziehen. Es gibt zwei Fälle, in denen wir empfehlen, die Echtheit der Nachricht zu überprüfen. Erstens, wenn Amazon SNS eine Nachricht an Ihren HTTP-Endpunkt sendet mit dem Hinweis, dass Sie ein Thema abonniert haben. Zweitens, wenn Amazon SNS Ihnen nach Ausführung der API-Aktion Subscribe
oder Unsubscribe
eine Bestätigungsnachricht an Ihren HTTP-Endpunkt sendet.
Führen Sie die folgenden Schritte aus, wenn Sie die von Amazon SNS gesendeten Nachrichten überprüfen:
-
Verwenden Sie immer HTTPS, wenn Sie das Zertifikat von Amazon SNS erhalten.
-
Überprüfen Sie die Authentizität des Zertifikats.
-
Überprüfen Sie, ob das Zertifikat von Amazon SNS empfangen wurde.
-
Wenn möglich, verwenden Sie eines der unterstützten AWS-SDKs für Amazon SNS, um Nachrichten zu validieren und zu überprüfen.
-
Vergewissern Sie sich, dass die Amazon-SNS-Nachrichten von Ihrem gewünschten
TopicArn
empfangen wurden.
Amazon SNS unterstützt zwei Versionen der Nachrichtensignatur:
-
SignatureVersion
1: Amazon SNS erstellt die Signatur basierend auf dem SHA1-Hash der Nachricht. -
SignatureVersion
2: Amazon SNS erstellt die Signatur basierend auf dem SHA256-Hash der Nachricht.
So konfigurieren Sie die Version der Nachrichtensignatur in Amazon-SNS-Themen
Standardmäßig verwenden Amazon-SNS-Themen SignatureVersion
1. Zum Auswählen des Hashing-Algorithmus für Ihr Amazon-SNS-Thema, also entweder SignatureVersion
1 (SHA1) oder SignatureVersion
2 (SHA256), können Sie die API-Aktion SetTopicAttributes
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
So überprüfen Sie die Signatur einer Amazon-SNS-Nachricht bei der Verwendung von abfragebasierten HTTP-Anfragen
-
Extrahieren Sie die Name-Wert-Paare aus dem JSON-Dokument der HTTP POST-Anfrage, die Amazon SNS an den Endpunkt gesendet hat. Sie werden mit den Werten einiger Name-Wert-Paare die zu signierende Zeichenfolge erstellen. Wenn Sie die Signatur einer Amazon-SNS-Nachricht überprüfen, ist es wichtig, dass Sie die Escape-Steuerzeichen zu den ursprünglichen Zeichenwerten
Message
undSubject
konvertieren. Diese Werte müssen in ihren ursprünglichen Formaten vorliegen, wenn Sie sie als Teil der zu signierenden Zeichenfolge verwenden. Weitere Informationen zur Analyse eines JSON-Dokuments finden Sie unter Schritt 1: Stellen Sie sicher, dass Ihr Endpunkt Amazon-SNS-Nachrichten verarbeiten kann.Die
SignatureVersion
gibt an, welche Signaturversion von Amazon SNS zum Generieren der Signatur der Nachricht verwendet wurde. Mit der Signaturversion können Sie die Anforderungen für das Erstellen der Signatur bestimmen. Bei 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. -
Rufen Sie das X.509-Zertifikat ab, das Amazon SNS zum Signieren der Nachricht verwendet 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 Hash-Wert der Amazon-SNS-Nachricht. Senden Sie die Amazon-SNS-Nachricht im kanonischen Format an denselben Hash-Algorithmus, der zum Generieren der Signatur verwendet wurde.
-
Wenn
SignatureVersion
1 ist, verwenden Sie SHA1 als Hash-Algorithmus. -
Wenn
SignatureVersion
2 ist, verwenden Sie SHA256 als Hash-Algorithmus.
-
-
Generieren Sie den festgestellten Hash-Wert der Amazon-SNS-Nachricht. Der festgestellte Hash-Wert ist das Ergebnis, das sich aus der Verwendung des öffentlichen Schlüsselwerts (aus Schritt 3) für die Entschlüsselung der mit der Amazon-SNS-Nachricht übermittelten Signatur ergibt.
-
Überprüfen Sie Authentizität und Integrität der Amazon-SNS-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 die Nachricht von Amazon SNS stammen muss. Wenn die Werte nicht identisch sind, sollte der Empfänger der Nachricht nicht vertrauen.