Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Überprüfen Sie das Instance-Identitätsdokument für eine EC2 Amazon-Instance

Fokusmodus
Überprüfen Sie das Instance-Identitätsdokument für eine EC2 Amazon-Instance - 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.

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.

Wenn Sie beabsichtigen, den Inhalt des Instance-Identitätsdokument für einen wichtigen Zweck zu verwenden, sollten Sie den Inhalt und die Authentizität überprüfen, bevor Sie es verwenden.

Das Klartext-Instance-Identitätsdokument wird von drei gehashten und verschlüsselten Signaturen ergänzt. Sie können diese Signaturen verwenden, um die Herkunft und Authentizität des Instance-Identitätsdokument und der darin enthaltenen Informationen zu überprüfen. Die folgenden Signaturen werden bereitgestellt:

  • Base64-kodierte Signatur — Dies ist ein Base64-codierter SHA256 Hash des Instanzidentitätsdokuments, der mit einem RSA-Schlüsselpaar verschlüsselt wurde.

  • PKCS7 Signatur — Dies ist ein SHA1 Hash des Instanzidentitätsdokuments, der mit einem DSA-Schlüsselpaar verschlüsselt wurde.

  • RSA-2048-Signatur — Dies ist ein SHA256 Hash des Instance-Identitätsdokuments, das mit einem RSA-2048-Schlüsselpaar verschlüsselt wurde.

Jede Signatur ist an einem anderen Endpunkt in den Metadaten der Instance verfügbar. Sie können je nach Ihren Hashing- und Verschlüsselungsanforderungen eine beliebige dieser Signaturen verwenden. Um die Signaturen zu überprüfen, müssen Sie das entsprechende öffentliche Zertifikat verwenden. AWS

Option 1: Überprüfen Sie das Identitätsdokument der Instanz anhand der PKCS7 Signatur

In diesem Thema wird erklärt, wie das Identitätsdokument der Instanz anhand der PKCS7 Signatur und des öffentlichen AWS DSA-Zertifikats verifiziert wird.

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

  2. Rufen Sie die PKCS7 Signatur aus den Instanz-Metadaten ab und fügen Sie sie pkcs7 zusammen mit der erforderlichen Kopf- und Fußzeile einer neuen Datei hinzu. Verwenden Sie je nach der von der Instance verwendeten IMDS-Version einen der folgenden Befehle.

    IMDSv2
    $ echo "-----BEGIN PKCS7-----" >> pkcs7 \ && 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/pkcs7 >> pkcs7 \ && echo "" >> pkcs7 \ && echo "-----END PKCS7-----" >> pkcs7
    IMDSv1
    $ echo "-----BEGIN PKCS7-----" >> pkcs7 \ && curl -s http://169.254.169.254/latest/dynamic/instance-identity/pkcs7 >> pkcs7 \ && echo "" >> pkcs7 \ && echo "-----END PKCS7-----" >> pkcs7
  3. Suchen Sie das öffentliche DSA-Zertifikat für Ihre Region in AWS öffentliche Zertifikate, zum Beispiel Signaturen von Ausweisdokumenten 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 pkcs7 -inform PEM -certfile certificate -noverify | tee document

    Wenn die Signatur gültig ist, wird die Meldung Verification successful angezeigt.

    Der Befehl schreibt außerdem den Inhalt des Instance-Identitätsdokuments in eine neue Datei namens document. Mit den folgenden Befehlen können Sie den Inhalt des Instance-Identitätsdokuments aus den Instance-Metadaten mit dem Inhalt dieser Datei vergleichen.

    $ openssl dgst -sha256 < document
    $ curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document | openssl dgst -sha256

    Wenn die Signatur nicht verifiziert werden kann, wenden Sie sich an Support.

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

  2. Rufen Sie die PKCS7 Signatur aus den Instanz-Metadaten ab und fügen Sie sie pkcs7 zusammen mit der erforderlichen Kopf- und Fußzeile einer neuen Datei hinzu. Verwenden Sie je nach der von der Instance verwendeten IMDS-Version einen der folgenden Befehle.

    IMDSv2
    $ echo "-----BEGIN PKCS7-----" >> pkcs7 \ && 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/pkcs7 >> pkcs7 \ && echo "" >> pkcs7 \ && echo "-----END PKCS7-----" >> pkcs7
    IMDSv1
    $ echo "-----BEGIN PKCS7-----" >> pkcs7 \ && curl -s http://169.254.169.254/latest/dynamic/instance-identity/pkcs7 >> pkcs7 \ && echo "" >> pkcs7 \ && echo "-----END PKCS7-----" >> pkcs7
    $ echo "-----BEGIN PKCS7-----" >> pkcs7 \ && 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/pkcs7 >> pkcs7 \ && echo "" >> pkcs7 \ && echo "-----END PKCS7-----" >> pkcs7
  3. Suchen Sie das öffentliche DSA-Zertifikat für Ihre Region in AWS öffentliche Zertifikate, zum Beispiel Signaturen von Ausweisdokumenten 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 pkcs7 -inform PEM -certfile certificate -noverify | tee document

    Wenn die Signatur gültig ist, wird die Meldung Verification successful angezeigt.

    Der Befehl schreibt außerdem den Inhalt des Instance-Identitätsdokuments in eine neue Datei namens document. Mit den folgenden Befehlen können Sie den Inhalt des Instance-Identitätsdokuments aus den Instance-Metadaten mit dem Inhalt dieser Datei vergleichen.

    $ openssl dgst -sha256 < document
    $ curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document | openssl dgst -sha256

    Wenn die Signatur nicht verifiziert werden kann, wenden Sie sich an 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 anhand der PKCS7 Signatur und des öffentlichen AWS DSA-Zertifikats zu überprüfen
  1. Stellen Sie eine Verbindung zur Instance her.

  2. Rufen Sie die PKCS7 Signatur aus den Instanz-Metadaten ab, konvertieren Sie sie in ein Byte-Array und fügen Sie sie einer Variablen mit dem Namen $Signature hinzu. 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/pkcs7).Content)
    IMDSv1
    PS C:\> $Signature = [Convert]::FromBase64String((Invoke-WebRequest http://169.254.169.254/latest/dynamic/instance-identity/pkcs7).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 DSA-Zertifikat für Ihre Region in AWS öffentliche Zertifikate, zum Beispiel Signaturen von Ausweisdokumenten 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 Instance-Identitätsdokument nicht validiert 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 anhand der PKCS7 Signatur und des öffentlichen AWS DSA-Zertifikats zu überprüfen
  1. Stellen Sie eine Verbindung zur Instance her.

  2. Rufen Sie die PKCS7 Signatur aus den Instanz-Metadaten ab, konvertieren Sie sie in ein Byte-Array und fügen Sie sie einer Variablen mit dem Namen $Signature hinzu. 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/pkcs7).Content)
    IMDSv1
    PS C:\> $Signature = [Convert]::FromBase64String((Invoke-WebRequest http://169.254.169.254/latest/dynamic/instance-identity/pkcs7).Content)
    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/pkcs7).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)
    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)
  4. Suchen Sie das öffentliche DSA-Zertifikat für Ihre Region in AWS öffentliche Zertifikate, zum Beispiel Signaturen von Ausweisdokumenten 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 Instance-Identitätsdokument nicht validiert werden kann, wenden Sie sich an AWS -Support.

Option 2: Verwendung der Base64-kodierten Signatur zur Verifizierung des Instance-Identitätsdokuments

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

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

  2. Rufen Sie die base64-kodierte Signatur aus den Metadaten der Instance ab, konvertieren Sie sie in ein Binärformat und fügen Sie sie zu einer Datei namens signature hinzu. Verwenden Sie je nach der von der Instance verwendeten IMDS-Version einen der folgenden Befehle.

    IMDSv2
    $ 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/signature | base64 -d >> signature
    IMDSv1
    $ curl -s http://169.254.169.254/latest/dynamic/instance-identity/signature | base64 -d >> signature
  3. Rufen Sie die Klartext-Instance-Identitätsdokument aus den Metadaten der Instance ab und fügen Sie sie zu einer Datei mit dem Namen document hinzu. Verwenden Sie je nach der von der Instance verwendeten IMDS-Version einen der folgenden Befehle.

    IMDSv2
    $ 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/document >> document
    IMDSv1
    $ curl -s http://169.254.169.254/latest/dynamic/instance-identity/document >> document
  4. Suchen Sie das öffentliche RSA-Zertifikat für Ihre Region in AWS öffentliche Zertifikate, zum Beispiel Signaturen von Ausweisdokumenten und fügen Sie den Inhalt in eine neue Datei mit dem Namen certificate ein.

  5. Extrahieren Sie den öffentlichen Schlüssel aus dem öffentlichen AWS RSA-Zertifikat und speichern Sie ihn in einer Datei mit dem Namen. key

    $ openssl x509 -pubkey -noout -in certificate >> key
  6. Verwenden Sie den Befehl OpenSSL dgst, um die Instance-Identitätsdokument zu überprüfen.

    $ openssl dgst -sha256 -verify key -signature signature document

    Wenn die Signatur gültig ist, wird die Meldung Verification successful angezeigt.

    Der Befehl schreibt außerdem den Inhalt des Instance-Identitätsdokuments in eine neue Datei namens document. Mit den folgenden Befehlen können Sie den Inhalt des Instance-Identitätsdokuments aus den Instance-Metadaten mit dem Inhalt dieser Datei vergleichen.

    $ openssl dgst -sha256 < document
    $ curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document | openssl dgst -sha256

    Wenn die Signatur nicht verifiziert werden kann, wenden Sie sich an Support.

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

  2. Rufen Sie die base64-kodierte Signatur aus den Metadaten der Instance ab, konvertieren Sie sie in ein Binärformat und fügen Sie sie zu einer Datei namens signature hinzu. Verwenden Sie je nach der von der Instance verwendeten IMDS-Version einen der folgenden Befehle.

    IMDSv2
    $ 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/signature | base64 -d >> signature
    IMDSv1
    $ curl -s http://169.254.169.254/latest/dynamic/instance-identity/signature | base64 -d >> signature
    $ 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/signature | base64 -d >> signature
  3. Rufen Sie die Klartext-Instance-Identitätsdokument aus den Metadaten der Instance ab und fügen Sie sie zu einer Datei mit dem Namen document hinzu. Verwenden Sie je nach der von der Instance verwendeten IMDS-Version einen der folgenden Befehle.

    IMDSv2
    $ 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/document >> document
    IMDSv1
    $ curl -s http://169.254.169.254/latest/dynamic/instance-identity/document >> document
    $ 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/document >> document
  4. Suchen Sie das öffentliche RSA-Zertifikat für Ihre Region in AWS öffentliche Zertifikate, zum Beispiel Signaturen von Ausweisdokumenten und fügen Sie den Inhalt in eine neue Datei mit dem Namen certificate ein.

  5. Extrahieren Sie den öffentlichen Schlüssel aus dem öffentlichen AWS RSA-Zertifikat und speichern Sie ihn in einer Datei mit dem Namen. key

    $ openssl x509 -pubkey -noout -in certificate >> key
  6. Verwenden Sie den Befehl OpenSSL dgst, um die Instance-Identitätsdokument zu überprüfen.

    $ openssl dgst -sha256 -verify key -signature signature document

    Wenn die Signatur gültig ist, wird die Meldung Verification successful angezeigt.

    Der Befehl schreibt außerdem den Inhalt des Instance-Identitätsdokuments in eine neue Datei namens document. Mit den folgenden Befehlen können Sie den Inhalt des Instance-Identitätsdokuments aus den Instance-Metadaten mit dem Inhalt dieser Datei vergleichen.

    $ openssl dgst -sha256 < document
    $ curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document | openssl dgst -sha256

    Wenn die Signatur nicht verifiziert werden kann, wenden Sie sich an Support.

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

  2. Rufen Sie die base64-kodierte Signatur aus den Metadaten der Instance ab, konvertieren Sie sie in ein Byte-Array und fügen Sie sie der Variablen mit dem Namen $Signature hinzu. 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/signature).Content)
    IMDSv1
    PS C:\> $Signature = [Convert]::FromBase64String((Invoke-WebRequest http://169.254.169.254/latest/dynamic/instance-identity/signature).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-Zertifikat für Ihre Region in AWS öffentliche Zertifikate, zum Beispiel Signaturen von Ausweisdokumenten und fügen Sie den Inhalt in eine neue Datei mit dem Namen certificate.pem ein.

  5. Überprüfen Sie das Instance-Identitätsdokument.

    PS C:\> [Security.Cryptography.X509Certificates.X509Certificate2]::new((Resolve-Path certificate.pem)).PublicKey.Key.VerifyData($Document, 'SHA256', $Signature)

    Wenn die Signatur gültig ist, gibt der Befehl True zurück. Wenn die Signatur nicht verifiziert werden kann, wenden Sie sich an Support.

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

  2. Rufen Sie die base64-kodierte Signatur aus den Metadaten der Instance ab, konvertieren Sie sie in ein Byte-Array und fügen Sie sie der Variablen mit dem Namen $Signature hinzu. 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/signature).Content)
    IMDSv1
    PS C:\> $Signature = [Convert]::FromBase64String((Invoke-WebRequest http://169.254.169.254/latest/dynamic/instance-identity/signature).Content)
    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/signature).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)
    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)
  4. Suchen Sie das öffentliche RSA-Zertifikat für Ihre Region in AWS öffentliche Zertifikate, zum Beispiel Signaturen von Ausweisdokumenten und fügen Sie den Inhalt in eine neue Datei mit dem Namen certificate.pem ein.

  5. Überprüfen Sie das Instance-Identitätsdokument.

    PS C:\> [Security.Cryptography.X509Certificates.X509Certificate2]::new((Resolve-Path certificate.pem)).PublicKey.Key.VerifyData($Document, 'SHA256', $Signature)

    Wenn die Signatur gültig ist, gibt der Befehl True zurück. Wenn die Signatur nicht verifiziert werden kann, wenden Sie sich an Support.

Option 3: Verwenden der RSA-2048-Signatur zur Verifizierung des Instance-Identitätsdokuments

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, zum Beispiel Signaturen von Ausweisdokumenten 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 Support.

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
    $ 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
  3. Suchen Sie das öffentliche RSA-2048-Zertifikat für Ihre Region in AWS öffentliche Zertifikate, zum Beispiel Signaturen von Ausweisdokumenten 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 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, zum Beispiel Signaturen von Ausweisdokumenten 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 Instance-Identitätsdokument nicht validiert 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)
    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)
  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)
    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)
  4. Suchen Sie das öffentliche RSA-2048-Zertifikat für Ihre Region in AWS öffentliche Zertifikate, zum Beispiel Signaturen von Ausweisdokumenten 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 Instance-Identitätsdokument nicht validiert werden kann, wenden Sie sich an AWS -Support.

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.