Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Wie überprüfe ich Signaturen, die von asymmetrischen AWS KMS-Schlüsseln generiert wurden?
Ich möchte den AWS Key Management Service (AWS KMS) verwenden, um eine Datei zu signieren. Dann möchte ich die Datei, ihre Signatur und den öffentlichen Schlüssel teilen, um zu überprüfen, ob die Signatur gültig ist. Ich möchte Benutzern keinen API-Zugriff gewähren, damit sie auf meinen AWS KMS-Schlüssel zugreifen können.
Lösung
Das folgende Beispiel verwendet AWS KMS mit einem asymmetrischen ECC_NIST_P256 (secp256r1)-Schlüsselpaar. Wenn AWS KMS dieses Schlüsselpaar verwendet, um eine Signaturdatei zu generieren, wird die Datei gemäß NIST FIPS 168-4 erstellt. Eine digitale ECDSA-Signatur, die (r, s)-Werte enthält, wird gemäß ANS X9.62 generiert. Aufgrund des offenen Standards kannst du OpenSSL verwenden, um die Signatur zu überprüfen.
Das Signaturformat für RSA-Schlüsselpaare findest du unter RSA-Schlüsselspezifikationen für Signatur und Überprüfung.
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version von AWS CLI verwendest.
Eine lokale Datei signieren
Nachdem du den asymmetrischen AWS KMS-Schlüssel in deinem AWS-Konto erstellt hast, verwende die AWS-CLI, um beim Signieren einer Datei auf den Schlüssel zu verweisen. Die Antwort, die du von der AWS KMS-API erhältst, ist in Base64 codiert. Im folgenden Beispiel wird der Parameter --query verwendet, um den Signaturwert aus der Antwort abzurufen und ihn in der sign.b64-Datei abzulegen:
[ec2-user@ip-172-31-23-22 ~]$ aws kms sign --key-id arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab --message fileb://message.txt --signing-algorithm ECDSA_SHA_256 --query 'Signature' --output text > sign.b64
Hinweis: Du kannst Nachrichten bis zu 4096 B senden. Um eine größere Nachricht zu signieren, generiere einen Hash-Digest der Nachricht. Gib dann den Hash-Digest im Nachrichtenparameter an. Verwende den MessageType-Parameter, um anzuzeigen, ob es sich bei der Nachricht um eine vollständige Nachricht oder einen Überblick handelt. Notiere dir den Signaturalgorithmus, um die Signatur später zu überprüfen.
Da die Signatur im Base64-Format vorliegt, führe den folgenden Linux-Base64-Kodierungsbefehl aus, um das Format in ein Binärformat zu konvertieren:
[ec2-user@ip-172-31-23-22 ~]$ base64 -d sign.b64 > sign.bin
Führe den folgenden Befehl aus, um Base64-Dateien für das Windows-Betriebssystem (OS) zu dekodieren:
certutil -decode C:\Temp\sign.b64 C:\Temp\sign.bin
Du kannst jetzt die sign.b64-Signaturdatei teilen.
Die AWS KMS-Signatur überprüfen
Um die Signaturdatei zu verifizieren, benötigst du den öffentlichen Schlüssel. Um den öffentlichen Schlüssel abzurufen, führe den AWS-CLI-Befehl get-public-key aus:
[ec2-user@ip-172-31-23-22 ~]$ aws kms get-public-key --key-id arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab --output text --query 'PublicKey' > KMSPublic.b64
Führe den folgenden Befehl aus, um die Base64-Datei in eine DER-kodierte Datei mit dem Namen KMSPublic.key zu konvertieren:
[ec2-user@ip-172-31-23-22 ~]$ base64 -d KMSPublic.b64 > KMSPublic.key
Du hast jetzt den öffentlichen Schlüssel und die Signatur im Binärformat mit der Datei message.txt.
Führe den OpenSSL-Befehl dgst aus, um die Signatur zu überprüfen:
[ec2-user@ip-172-31-23-22 ~]$ openssl dgst -sha256 -verify KMSPublic.key -keyform DER -signature sign.bin message.txtVerified OK
Die Überprüfung ist erfolgreich, wenn in der Ausgabe „Verifiziert OK“ angezeigt wird.
Wenn du keine Bestätigungsantwort erhältst, überprüfe Folgendes:
- Der OpenSSL-Signaturalgorithmus ist derselbe, den du zum Signieren der Datei verwendet hast.
- Deine Dateien sind nicht Base64-kodiert.
Ähnliche Informationen

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren