

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 EC2 instans Amazon
<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 Signature—Ini adalah SHA256 hash berenkode base64 dari dokumen identitas instance yang dienkripsi menggunakan key pair RSA.
+ PKCS7 Signature—ini adalah SHA1 hash dari dokumen identitas instance yang dienkripsi menggunakan key pair DSA.
+ Tanda tangan RSA-2048 — Ini adalah SHA256 hash 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 contoh menggunakan PKCS7 tanda tangan](#verify-pkcs7)
+ [Opsi 2: Verifikasi dokumen identitas instance menggunakan tanda tangan yang disandikan base64](#verify-signature)
+ [Opsi 3: Verifikasi dokumen identitas instance menggunakan tanda tangan RSA-2048](#verify-rsa2048)

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

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

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

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

1. Hubungkan dengan instans.

1. Ambil PKCS7 tanda tangan dari metadata instance dan tambahkan ke file baru bernama `pkcs7` bersama dengan 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 instance menggunakan PKCS7 tanda tangan dan sertifikat publik AWS DSA**

1. Hubungkan dengan instans.

1. Ambil PKCS7 tanda tangan dari metadata instance, ubah menjadi array byte, 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 instance menggunakan tanda tangan RSA-2048
<a name="verify-rsa2048"></a>

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

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

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

1. Hubungkan dengan instans.

1. Ambil tanda tangan RSA-2048 dari metadata instans dan tambahkan ke file bernama `rsa2048` beserta 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. Tambahkan sertifikat publik **RSA-2048** 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 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 tanda tangan RSA-2048 dan sertifikat publik RSA-2048 AWS**

1. Hubungkan dengan instans.

1. Ambil tanda tangan RSA-2048 dari metadata instans, ubah 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'} 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. Tambahkan sertifikat publik **RSA-2048** 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.