

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.

# Vérifier le document d’identité d’une instance Amazon EC2
<a name="verify-iid"></a>

Si vous avez l’intention d’utiliser le contenu du Documents d’identité d’instance à des fins importantes, vous devez vérifier son contenu et son authenticité avant de l’utiliser.

Le Documents d’identité d’instance en texte brut est accompagné de trois signatures hachées et chiffrées. Vous pouvez utiliser ces signatures pour vérifier l’origine et l’authenticité du Documents d’identité d’instance et les informations qu’il contient. Les signatures suivantes sont fournies :
+ Base64-encoded Signature : il s'agit d'un hachage SHA256 codé en base64 du document d'identité de l'instance chiffré à l'aide d'une paire de clés RSA.
+ Signature PKCS7 — Il s’agit d’un hachage SHA1 du Documents d’identité d’instance qui est chiffré à l’aide d’une paire de clés DSA.
+ RSA-2048 Signature : il s'agit d'un hachage SHA256 du document d'identité de l'instance chiffré à l'aide d'une paire de clés. RSA-2048 

Chaque signature est disponible à un point de terminaison différent dans les métadonnées de l’instance. Vous pouvez utiliser l’une de ces signatures en fonction de vos exigences de hachage et de chiffrement. Pour vérifier les signatures, vous devez utiliser le certificat AWS public correspondant.

**Contents**
+ [Option 1 : vérifier le document d’identité de l’instance à l’aide de la signature PKCS7](#verify-pkcs7)
+ [Option 2 : vérifier le document d’identité de l’instance à l’aide de la signature codée en base64](#verify-signature)
+ [Option 3 : vérifier le document d'identité de l'instance à l'aide de la RSA-2048 signature](#verify-rsa2048)

## Option 1 : vérifier le document d’identité de l’instance à l’aide de la signature PKCS7
<a name="verify-pkcs7"></a>

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

### Instances Linux
<a name="verify-pkcs7-linux"></a>

**Pour vérifier le document d'identité de l'instance à l'aide de la signature PKCS7 et du certificat public AWS DSA**

1. Connectez-vous à l’instance.

1. Récupérez la signature PKCS7 à 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é `pkcs7`. Utilisez l’une des commandes suivantes en fonction de la version IMDS utilisée par l’instance.

------
#### [ 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}}
   ```

------

1. Trouvez le certificat public **DSA** pour votre région dans [AWS des certificats publics, par exemple des signatures de documents d'identité](regions-certs.md) et ajoutez le contenu à un nouveau fichier nommé `certificate`.

1. 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 {{pkcs7}} -inform PEM -certfile {{certificate}} -noverify | tee document
   ```

   Si la signature est valide, le message `Verification successful` s’affiche.

   La commande écrit également le contenu du document d’identité d’instance dans un nouveau fichier nommé `document`. Vous pouvez comparer le contenu du document d’identité d’instance provenant des métadonnées d’instance avec le contenu de ce fichier à l’aide des commandes suivantes.

   ```
   $ 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
   ```

    Si la signature ne peut pas être vérifiée, contactez Support.

### instances Windows
<a name="verify-pkcs7-windows"></a>

**Conditions préalables**  
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 PKCS7 et du certificat public AWS DSA**

1. Connectez-vous à l’instance.

1. Récupérez la signature PKCS7 à partir des métadonnées de l’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'} -Uri http://169.254.169.254/latest/api/token).Content
   ```

   ```
   PS C:\> {{$Signature}} = [Convert]::FromBase64String((Invoke-WebRequest -Headers @{'X-aws-ec2-metadata-token' = $Token} -Uri http://169.254.169.254/latest/dynamic/instance-identity/pkcs7).Content)
   ```

------
#### [ IMDSv1 ]

   ```
   PS C:\> {{$Signature}} = [Convert]::FromBase64String((Invoke-WebRequest -Uri http://169.254.169.254/latest/dynamic/instance-identity/pkcs7).Content)
   ```

------

1. 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} -Uri 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)
   ```

------

1. Trouvez le certificat public **DSA** pour votre région dans [AWS des certificats publics, par exemple des signatures de documents d'identité](regions-certs.md) et ajoutez le contenu à un nouveau fichier nommé `certificate.pem`.

1. 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}})))
   ```

1. 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.

1. 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é de l’instance ne peut pas être validé, contactez AWS Support.

## Option 2 : vérifier le document d’identité de l’instance à l’aide de la signature codée en base64
<a name="verify-signature"></a>

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

### Instances Linux
<a name="verify-signature-linux"></a>

**Pour valider le document d'identité de l'instance à l'aide de la signature codée en base64 et du certificat public AWS RSA**

1. Connectez-vous à l’instance.

1. Récupérez la signature codée en base64 à partir des métadonnées d’instance, convertissez-la en binaire et ajoutez-la à un fichier nommé `signature`. Utilisez l’une des commandes suivantes en fonction de la version IMDS utilisée par l’instance.

------
#### [ 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}}
   ```

------

1. Récupérez le Documents d’identité d’instance en texte brut à partir des métadonnées de l’instance et ajoutez-le à un fichier nommé `document`. Utilisez l’une des commandes suivantes en fonction de la version IMDS utilisée par l’instance.

------
#### [ 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}}
   ```

------

1. Trouvez le certificat public **RSA** pour votre région dans [AWS des certificats publics, par exemple des signatures de documents d'identité](regions-certs.md) et ajoutez le contenu à un nouveau fichier nommé `certificate`.

1. Extrayez la clé publique du certificat public AWS RSA et enregistrez-la dans un fichier nommé`key`.

   ```
   $ openssl x509 -pubkey -noout -in {{certificate}} >> {{key}}
   ```

1. Utilisez la commande **OpenSSL dgst** pour vérifier le Documents d’identité d’instance.

   ```
   $ openssl dgst -sha256 -verify {{key}} -signature {{signature}} {{document}}
   ```

   Si la signature est valide, le message `Verification successful` s’affiche.

   La commande écrit également le contenu du document d’identité d’instance dans un nouveau fichier nommé `document`. Vous pouvez comparer le contenu du document d’identité d’instance provenant des métadonnées d’instance avec le contenu de ce fichier à l’aide des commandes suivantes.

   ```
   $ 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
   ```

    Si la signature ne peut pas être vérifiée, contactez Support.

### instances Windows
<a name="verify-signature-windows"></a>

**Pour valider le document d'identité de l'instance à l'aide de la signature codée en base64 et du certificat public AWS RSA**

1. Connectez-vous à l’instance.

1. Récupérez la signature codée en base64 à partir des métadonnées d’instance, convertissez-la en un tableau d’octets et ajoutez-la à la 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/signature).Content)
   ```

------
#### [ IMDSv1 ]

   ```
   PS C:\> {{$Signature}} = [Convert]::FromBase64String((Invoke-WebRequest http://169.254.169.254/latest/dynamic/instance-identity/signature).Content)
   ```

------

1. 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)
   ```

------

1. Trouvez le certificat public **RSA** pour votre région dans [AWS des certificats publics, par exemple des signatures de documents d'identité](regions-certs.md) et ajoutez le contenu à un nouveau fichier nommé `certificate.pem`.

1. Vérifier le document d’identité d’instance

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

   Si la signature est valide, la commande renvoie `True`. Si la signature ne peut pas être vérifiée, contactez Support.

## Option 3 : vérifier le document d'identité de l'instance à l'aide de la RSA-2048 signature
<a name="verify-rsa2048"></a>

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

### Instances Linux
<a name="verify-rsa2048-linux"></a>

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

1. Connectez-vous à l’instance.

1. Récupérez la RSA-2048 signature à partir des métadonnées de l'instance et ajoutez-la à un fichier nommé `rsa2048` le long de l'en-tête et du pied de page requis. 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}}
   ```

------

1. Trouvez le certificat **RSA-2048**public de votre région dans [AWS des certificats publics, par exemple des signatures de documents d'identité](regions-certs.md) et ajoutez-en le contenu dans un nouveau fichier nommé`certificate`.

1. 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 Support.

### instances Windows
<a name="verify-rsa2048-windows"></a>

**Conditions préalables**  
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 RSA-2048 signature et du certificat AWS RSA-2048 public**

1. Connectez-vous à l’instance.

1. Récupérez la RSA-2048 signature à partir des métadonnées de l'instance, convertissez-la en 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)
   ```

------

1. 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)
   ```

------

1. Trouvez le certificat **RSA-2048**public de votre région dans [AWS des certificats publics, par exemple des signatures de documents d'identité](regions-certs.md) et ajoutez-en le contenu dans un nouveau fichier nommé`certificate.pem`.

1. 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}})))
   ```

1. 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.

1. 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é de l’instance ne peut pas être validé, contactez AWS Support.