Verwenden der RSA-2048-Signatur zum Überprüfen der Instance-Identitätsdokument - Amazon Elastic Compute Cloud

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.

Verwenden der RSA-2048-Signatur zum Überprüfen der Instance-Identitätsdokument

In diesem Thema wird erklärt, wie Sie das Identitätsdokument der Instanz mithilfe der RSA-2048-Signatur und des öffentlichen RSA-2048-Zertifikats verifizieren. AWS

Um das Identitätsdokument der Instanz mithilfe der RSA-2048-Signatur und des öffentlichen RSA-2048-Zertifikats zu verifizieren AWS
  1. Stellen Sie eine Verbindung zur Instance her.

  2. Rufen Sie die RSA-2048-Signatur aus den Metadaten der Instance ab und fügen Sie sie zusammen mit der notwendigen Kopf- und Fußzeile zu einer Datei namens rsa2048 hinzu. Verwenden Sie je nach der von der Instance verwendeten IMDS-Version einen der folgenden Befehle.

    IMDSv2
    $ echo "-----BEGIN PKCS7-----" >> rsa2048 \ && TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/rsa2048 >> rsa2048 \ && echo "" >> rsa2048 \ && echo "-----END PKCS7-----" >> rsa2048
    IMDSv1
    $ echo "-----BEGIN PKCS7-----" >> rsa2048 \ && curl -s http://169.254.169.254/latest/dynamic/instance-identity/rsa2048 >> rsa2048 \ && echo "" >> rsa2048 \ && echo "-----END PKCS7-----" >> rsa2048
  3. Suchen Sie das öffentliche RSA-2048-Zertifikat für Ihre Region in AWS öffentliche Zertifikate und fügen Sie den Inhalt in eine neue Datei mit dem Namen certificate ein.

  4. Verwenden Sie den Befehl OpenSSL smime, um die Signatur zu überprüfen. Fügen Sie die Option -verify ein, um anzugeben, dass die Signatur verifiziert werden muss, und die Option -noverify, um anzugeben, dass das Zertifikat nicht verifiziert werden muss.

    $ openssl smime -verify -in rsa2048 -inform PEM -certfile certificate -noverify | tee document

    Wenn die Signatur gültig ist, wird die Meldung Verification successful angezeigt. Wenn die Signatur nicht verifiziert werden kann, wenden Sie sich an AWS Support.

Voraussetzungen

Dieses Verfahren erfordert die System.Security Microsoft .NET Core-Klasse. Führen Sie den folgenden Befehl aus, um die Klasse zu Ihrer PowerShell Sitzung hinzuzufügen.

PS C:\> Add-Type -AssemblyName System.Security
Anmerkung

Der Befehl fügt die Klasse nur der aktuellen PowerShell Sitzung hinzu. Wenn Sie eine neue Sitzung starten, müssen Sie den Befehl erneut ausführen.

Um das Identitätsdokument der Instanz mithilfe der RSA-2048-Signatur und des öffentlichen RSA-2048-Zertifikats AWS zu überprüfen
  1. Stellen Sie eine Verbindung zur Instance her.

  2. Rufen Sie die RSA-2048-Signatur aus den Metadaten der Instance ab, konvertieren Sie sie in ein Byte-Array und fügen Sie sie an eine Variable namens $Signature an. Verwenden Sie je nach der von der Instance verwendeten IMDS-Version einen der folgenden Befehle.

    IMDSv2
    PS C:\> [string]$token = (Invoke-WebRequest -Method Put -Headers @{'X-aws-ec2-metadata-token-ttl-seconds' = '21600'} http://169.254.169.254/latest/api/token).Content
    PS C:\> $Signature = [Convert]::FromBase64String((Invoke-WebRequest -Headers @{'X-aws-ec2-metadata-token' = $Token} http://169.254.169.254/latest/dynamic/instance-identity/rsa2048).Content)
    IMDSv1
    PS C:\> $Signature = [Convert]::FromBase64String((Invoke-WebRequest http://169.254.169.254/latest/dynamic/instance-identity/rsa2048).Content)
  3. Rufen Sie das Klartext-Identitätsdokument der Instance aus den Instance-Metadaten ab, konvertieren Sie es in ein Byte-Array und fügen Sie es zu einer Variablen namens $Document hinzu. Verwenden Sie je nach der von der Instance verwendeten IMDS-Version einen der folgenden Befehle.

    IMDSv2
    PS C:\> $Document = [Text.Encoding]::UTF8.GetBytes((Invoke-WebRequest -Headers @{'X-aws-ec2-metadata-token' = $Token} http://169.254.169.254/latest/dynamic/instance-identity/document).Content)
    IMDSv1
    PS C:\> $Document = [Text.Encoding]::UTF8.GetBytes((Invoke-WebRequest http://169.254.169.254/latest/dynamic/instance-identity/document).Content)
  4. Suchen Sie das öffentliche RSA-2048-Zertifikat für Ihre Region in AWS öffentliche Zertifikate und fügen Sie den Inhalt in eine neue Datei mit dem Namen certificate.pem ein.

  5. Extrahieren Sie das Zertifikat aus der Zertifikatsdatei und speichern Sie es in einer Variablen mit dem Namen $Store.

    PS C:\> $Store = [Security.Cryptography.X509Certificates.X509Certificate2Collection]::new([Security.Cryptography.X509Certificates.X509Certificate2]::new((Resolve-Path certificate.pem)))
  6. Überprüfen Sie die Signatur.

    PS C:\> $SignatureDocument = [Security.Cryptography.Pkcs.SignedCms]::new()
    PS C:\> $SignatureDocument.Decode($Signature)
    PS C:\> $SignatureDocument.CheckSignature($Store, $true)

    Wenn die Signatur gültig ist, gibt der Befehl keine Ausgabe zurück. Wenn die Signatur nicht verifiziert werden kann, gibt der Befehl zurüc Exception calling "CheckSignature" with "2" argument(s): "Cannot find the original signer. Wenn Ihre Signatur nicht verifiziert werden kann, wenden Sie sich an AWS Support.

  7. Validieren Sie den Inhalt des Instance-Identitätsdokuments.

    PS C:\> [Linq.Enumerable]::SequenceEqual($SignatureDocument.ContentInfo.Content, $Document)

    Wenn der Inhalt des Identitätsdokuments der Instance gültig ist, gibt der Befehl True zurück. Wenn das Identitätsdokument der Instance nicht validiert werden kann, wenden Sie sich an AWS Support.