

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Verifikasi dokumen identitas instans untuk instans Amazon EC2
<a name="verify-iid"></a>

Jika Anda bermaksud menggunakan konten dokumen identitas instans untuk tujuan penting, Anda harus memverifikasi konten dan keaslian sebelum menggunakannya.

Dokumen identitas instans plaintext disertai dengan tiga tanda tangan yang di-hash dan dienkripsi. Anda dapat menggunakan tanda tangan ini untuk memverifikasi asal dan keaslian dokumen identitas instans serta informasi yang disertakan. Tanda tangan berikut disediakan:
+ Base64-encoded Tanda tangan—Ini adalah hash SHA256 yang dikodekan base64 dari dokumen identitas instance yang dienkripsi menggunakan key pair RSA.
+ Tanda tangan PKCS7—Ini adalah hash SHA1 dari dokumen identitas instans yang dienkripsi menggunakan pasangan kunci DSA.
+ RSA-2048 Signature—ini adalah hash SHA256 dari dokumen identitas instance yang dienkripsi menggunakan key pair. RSA-2048 

Setiap tanda tangan tersedia di titik akhir yang berbeda dalam metadata instans. Anda dapat menggunakan salah satu dari tanda tangan ini, tergantung persyaratan hashing dan enkripsi Anda. Untuk memverifikasi tanda tangan, Anda harus menggunakan sertifikat AWS publik yang sesuai.

**Contents**
+ [Opsi 1: Verifikasi dokumen identitas instance menggunakan tanda tangan PKCS7](#verify-pkcs7)
+ [Opsi 2: Verifikasi dokumen identitas instance menggunakan tanda tangan yang disandikan base64](#verify-signature)
+ [Opsi 3: Verifikasi dokumen identitas contoh menggunakan RSA-2048 tanda tangan](#verify-rsa2048)

## Opsi 1: Verifikasi dokumen identitas instance menggunakan tanda tangan PKCS7
<a name="verify-pkcs7"></a>

Topik ini menjelaskan cara memverifikasi dokumen identitas instance menggunakan tanda tangan PKCS7 dan sertifikat publik AWS DSA.

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

**Untuk memverifikasi dokumen identitas instans menggunakan tanda tangan PKCS7 dan sertifikat publik DSA AWS**

1. Hubungkan dengan instans.

1. Ambil tanda tangan PKCS7 dari metadata instans dan tambahkan ke file baru bernama `pkcs7` beserta header dan footer yang diperlukan. Gunakan salah satu perintah berikut, tergantung pada versi IMDS yang digunakan oleh instans.

------
#### [ 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. Temukan sertifikat publik **DSA** untuk Wilayah Anda di [AWS sertifikat publik misalnya tanda tangan dokumen identitas](regions-certs.md) dan tambahkan konten ke file baru yang bernama `certificate`.

1. Gunakan perintah **OpenSSL smime** untuk memverifikasi tanda tangan. Masukkan opsi `-verify` untuk menunjukkan bahwa tanda tangan perlu diverifikasi, dan opsi `-noverify` untuk menunjukkan bahwa sertifikat tidak perlu diverifikasi.

   ```
   $ openssl smime -verify -in {{pkcs7}} -inform PEM -certfile {{certificate}} -noverify | tee document
   ```

   Jika tanda tangan valid, pesan `Verification successful` muncul.

   Perintah tersebut juga menulis konten dokumen identitas instans ke file baru bernama `document`. Anda dapat membandingkan konten dokumen identitas instans dari metadata instans dengan konten file ini menggunakan perintah berikut.

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

    Jika tanda tangan tidak dapat diverifikasi, kontak Dukungan.

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

**Prasyarat**  
Prosedur ini membutuhkan kelas `System.Security` Microsoft.NET Core. Untuk menambahkan kelas ke PowerShell sesi Anda, jalankan perintah berikut.

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

**catatan**  
Perintah menambahkan kelas ke PowerShell sesi saat ini saja. Jika Anda memulai sesi baru, Anda harus menjalankan perintah lagi.

**Untuk memverifikasi dokumen identitas instans menggunakan tanda tangan PKCS7 dan sertifikat publik DSA AWS**

1. Hubungkan dengan instans.

1. Ambil tanda tangan PKCS7 dari metadata instans, konversi ke byte array, dan tambahkan ke variabel bernama `$Signature`. Gunakan salah satu perintah berikut, tergantung pada versi IMDS yang digunakan oleh instans.

------
#### [ 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. Ambil dokumen identitas instans plaintext dari metadata instans, ubah menjadi array byte, dan tambahkan ke variabel bernama `$Document`. Gunakan salah satu perintah berikut, tergantung pada versi IMDS yang digunakan oleh instans.

------
#### [ 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. Temukan sertifikat publik **DSA** untuk Wilayah Anda di [AWS sertifikat publik misalnya tanda tangan dokumen identitas](regions-certs.md) dan tambahkan konten ke file baru yang bernama `certificate.pem`.

1. Ekstrak sertifikat dari file sertifikat dan simpan dalam variabel bernama `$Store`.

   ```
   PS C:\> {{$Store}} = [Security.Cryptography.X509Certificates.X509Certificate2Collection]::new([Security.Cryptography.X509Certificates.X509Certificate2]::new((Resolve-Path {{certificate.pem}})))
   ```

1. Verifikasi tanda tangan.

   ```
   PS C:\> {{$SignatureDocument}} = [Security.Cryptography.Pkcs.SignedCms]::new()
   ```

   ```
   PS C:\> {{$SignatureDocument}}.Decode({{$Signature}})
   ```

   ```
   PS C:\> {{$SignatureDocument}}.CheckSignature({{$Store}}, $true)
   ```

   Jika tanda tangan valid, perintah tidak mengembalikan keluaran. Jika tanda tangan tidak dapat diverifikasi, perintah menampilkan `Exception calling "CheckSignature" with "2" argument(s): "Cannot find the original signer`. Jika tanda tangan tidak dapat diverifikasi, hubungi AWS Dukungan.

1. Validasi konten dokumen identitas instans.

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

   Jika konten dokumen identitas instans valid, perintah mengembalikan `True`. Jika dokumen identitas instance tidak dapat divalidasi, hubungi AWS Dukungan.

## Opsi 2: Verifikasi dokumen identitas instance menggunakan tanda tangan yang disandikan base64
<a name="verify-signature"></a>

Topik ini menjelaskan cara memverifikasi dokumen identitas instance menggunakan tanda tangan berenkode base64 dan sertifikat publik RSA AWS .

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

**Untuk memvalidasi dokumen identitas instance menggunakan tanda tangan berenkode base64 dan sertifikat publik RSA AWS**

1. Hubungkan dengan instans.

1. Ambil tanda tangan berenkode base64 dari metadata instans, konversikan ke biner, dan tambahkan tanda tangan tersebut ke file bernama `signature`. Gunakan salah satu perintah berikut, tergantung pada versi IMDS yang digunakan oleh instans.

------
#### [ 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. Ambil dokumen identitas instans plaintext dari metadata instans dan tambahkan ke file bernama `document`. Gunakan salah satu perintah berikut, tergantung pada versi IMDS yang digunakan oleh instans.

------
#### [ 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. Tambahkan sertifikat publik **RSA** untuk Wilayah Anda di [AWS sertifikat publik misalnya tanda tangan dokumen identitas](regions-certs.md) dan tambahkan konten ke file baru yang bernama `certificate`.

1. Ekstrak kunci publik dari sertifikat publik AWS RSA dan simpan ke file bernama`key`.

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

1. Gunakan perintah **OpenSSL dgst** untuk memverifikasi dokumen identitas instans.

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

   Jika tanda tangannya valid, file`Verification successful` pesan muncul.

   Perintah tersebut juga menulis konten dokumen identitas instans ke file baru bernama `document`. Anda dapat membandingkan konten dokumen identitas instans dari metadata instans dengan konten file ini menggunakan perintah berikut.

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

    Jika tanda tangan tidak dapat diverifikasi, kontak Dukungan.

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

**Untuk memvalidasi dokumen identitas instance menggunakan tanda tangan berenkode base64 dan sertifikat publik RSA AWS**

1. Hubungkan dengan instans.

1. Ambil tanda tangan berenkode base64 dari metadata instans, konversikan ke array bita, dan tambahkan tanda tangan tersebut ke variabel bernama `$Signature`. Gunakan salah satu perintah berikut, tergantung pada versi IMDS yang digunakan oleh instans.

------
#### [ 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. Ambil dokumen identitas instans plaintext dari metadata instans, ubah menjadi array byte, dan tambahkan ke variabel bernama `$Document`. Gunakan salah satu perintah berikut, tergantung pada versi IMDS yang digunakan oleh instans.

------
#### [ 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. Tambahkan sertifikat publik **RSA** untuk Wilayah Anda di [AWS sertifikat publik misalnya tanda tangan dokumen identitas](regions-certs.md) dan tambahkan konten ke file baru yang bernama `certificate.pem`.

1. Verifikasi dokumen identitas instans.

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

   Jika tanda tangan valid, perintah mengembalikan `True`. Jika tanda tangan tidak dapat diverifikasi, kontak Dukungan.

## Opsi 3: Verifikasi dokumen identitas contoh menggunakan RSA-2048 tanda tangan
<a name="verify-rsa2048"></a>

Topik ini menjelaskan cara memverifikasi dokumen identitas instance menggunakan RSA-2048 tanda tangan dan sertifikat AWS RSA-2048 publik.

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

**Untuk memverifikasi dokumen identitas instance menggunakan RSA-2048 tanda tangan dan sertifikat AWS RSA-2048 publik**

1. Hubungkan dengan instans.

1. Ambil RSA-2048 tanda tangan dari metadata instance dan tambahkan ke file bernama `rsa2048` sepanjang header dan footer yang diperlukan. Gunakan salah satu perintah berikut, tergantung pada versi IMDS yang digunakan oleh instans.

------
#### [ 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. Temukan sertifikat **RSA-2048**publik untuk Wilayah Anda [AWS sertifikat publik misalnya tanda tangan dokumen identitas](regions-certs.md) dan tambahkan konten ke file baru bernama`certificate`.

1. Gunakan perintah **OpenSSL smime** untuk memverifikasi tanda tangan. Masukkan opsi `-verify` untuk menunjukkan bahwa tanda tangan perlu diverifikasi, dan opsi `-noverify` untuk menunjukkan bahwa sertifikat tidak perlu diverifikasi.

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

   Jika tanda tangan valid, pesan `Verification successful` muncul. Jika tanda tangan tidak dapat diverifikasi, kontak Dukungan.

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

**Prasyarat**  
Prosedur ini membutuhkan kelas `System.Security` Microsoft.NET Core. Untuk menambahkan kelas ke PowerShell sesi Anda, jalankan perintah berikut.

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

**catatan**  
Perintah menambahkan kelas ke PowerShell sesi saat ini saja. Jika Anda memulai sesi baru, Anda harus menjalankan perintah lagi.

**Untuk memverifikasi dokumen identitas instance menggunakan RSA-2048 tanda tangan dan sertifikat AWS RSA-2048 publik**

1. Hubungkan dengan instans.

1. Ambil RSA-2048 tanda tangan dari metadata instance, mengubahnya menjadi array byte, dan menambahkannya ke variabel bernama. `$Signature` Gunakan salah satu perintah berikut, tergantung pada versi IMDS yang digunakan oleh instans.

------
#### [ 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. Ambil dokumen identitas instans plaintext dari metadata instans, ubah menjadi array byte, dan tambahkan ke variabel bernama `$Document`. Gunakan salah satu perintah berikut, tergantung pada versi IMDS yang digunakan oleh instans.

------
#### [ 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. Temukan sertifikat **RSA-2048**publik untuk Wilayah Anda [AWS sertifikat publik misalnya tanda tangan dokumen identitas](regions-certs.md) dan tambahkan konten ke file baru bernama`certificate.pem`.

1. Ekstrak sertifikat dari file sertifikat dan simpan dalam variabel bernama `$Store`.

   ```
   PS C:\> {{$Store}} = [Security.Cryptography.X509Certificates.X509Certificate2Collection]::new([Security.Cryptography.X509Certificates.X509Certificate2]::new((Resolve-Path {{certificate.pem}})))
   ```

1. Verifikasi tanda tangan.

   ```
   PS C:\> {{$SignatureDocument}} = [Security.Cryptography.Pkcs.SignedCms]::new()
   ```

   ```
   PS C:\> {{$SignatureDocument}}.Decode({{$Signature}})
   ```

   ```
   PS C:\> {{$SignatureDocument}}.CheckSignature({{$Store}}, $true)
   ```

   Jika tanda tangan valid, perintah tidak mengembalikan keluaran. Jika tanda tangan tidak dapat diverifikasi, perintah menampilkan `Exception calling "CheckSignature" with "2" argument(s): "Cannot find the original signer`. Jika tanda tangan tidak dapat diverifikasi, hubungi AWS Dukungan.

1. Validasi konten dokumen identitas instans.

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

   Jika konten dokumen identitas instans valid, perintah mengembalikan `True`. Jika dokumen identitas instance tidak dapat divalidasi, hubungi AWS Dukungan.