Utiliser la signature RSA-2048 pour vérifier le Documents d’identité d’instance - Amazon Elastic Compute Cloud

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utiliser la signature RSA-2048 pour vérifier le Documents d’identité d’instance

Cette rubrique explique comment vérifier le document d'identité de l'instance à l'aide de la signature RSA-2048 et du certificat public AWS RSA-2048.

Pour vérifier le document d'identité de l'instance à l'aide de la signature RSA-2048 et du AWS certificat public RSA-2048
  1. Connectez-vous à l’instance.

  2. Récupérez la signature RSA-2048 à partir des métadonnées de l’instance et ajoutez-la, ainsi que l’en-tête et le pied de page requis, à un fichier nommé rsa2048. Utilisez l’une des commandes suivantes en fonction de la version IMDS utilisée par l’instance.

    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. Trouvez le certificat public RSA-2048 pour votre région dans AWS certificats publics et ajoutez le contenu à un nouveau fichier nommé certificate.

  4. Utilisez la commande OpenSSL smime pour vérifier la signature. Incluez l’option -verify indiquant que la signature doit être vérifiée et l’option -noverify indiquant que le certificat n’a pas besoin d’être vérifié.

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

    Si la signature est valide, le message Verification successful s’affiche. Si la signature ne peut pas être vérifiée, contactez AWS Support.

Prérequis

Cette procédure nécessite la classe System.Security Microsoft .NET Core. Pour ajouter la classe à votre PowerShell session, exécutez la commande suivante.

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

La commande ajoute la classe à la PowerShell session en cours uniquement. Si vous démarrez une nouvelle séance, vous devez exécuter à nouveau la commande.

Pour vérifier le document d'identité de l'instance à l'aide de la signature RSA-2048 et du AWS certificat public RSA-2048
  1. Connectez-vous à l’instance.

  2. Récupérez la signature RSA-2048 à partir des métadonnées d’instance, convertissez-la en un tableau d’octets et ajoutez-la à une variable nommée $Signature. Utilisez l’une des commandes suivantes en fonction de la version IMDS utilisée par l’instance.

    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. Récupérez le document d’identité d’instance en texte brut à partir des métadonnées d’instance, convertissez-le en un tableau d’octets et ajoutez-le à une variable nommée $Document. Utilisez l’une des commandes suivantes en fonction de la version IMDS utilisée par l’instance.

    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. Trouvez le certificat public RSA-2048 pour votre région dans AWS certificats publics et ajoutez le contenu à un nouveau fichier nommé certificate.pem.

  5. Extrayez le certificat du fichier de certificat et stockez-le dans une variable nommée $Store.

    PS C:\> $Store = [Security.Cryptography.X509Certificates.X509Certificate2Collection]::new([Security.Cryptography.X509Certificates.X509Certificate2]::new((Resolve-Path certificate.pem)))
  6. Vérifiez la signature.

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

    Si la signature est valide, la commande ne renvoie aucune sortie. Si la signature ne peut pas être vérifiée, la commande renvoie Exception calling "CheckSignature" with "2" argument(s): "Cannot find the original signer. Si votre signature ne peut pas être vérifiée, contactez AWS Support.

  7. Validez le contenu du document d’identité d’instance.

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

    Si le contenu du document d’identité d’instance est valide, la commande renvoie True. Si le document d’identité d’instance ne peut pas être validé, contactez AWS Support.