Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Verifikasi dokumen identitas instans untuk EC2 instans Amazon

Mode fokus
Verifikasi dokumen identitas instans untuk EC2 instans Amazon - Amazon Elastic Compute Cloud

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

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

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.

Opsi 1: Verifikasi dokumen identitas contoh menggunakan PKCS7 tanda tangan

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

Untuk memverifikasi dokumen identitas instance menggunakan PKCS7 tanda tangan dan sertifikat publik AWS DSA
  1. Hubungkan dengan instans.

  2. 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
  3. Temukan sertifikat publik DSA untuk Wilayah Anda di AWS sertifikat publik misalnya tanda tangan dokumen identitas dan tambahkan konten ke file baru yang bernama certificate.

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

Untuk memverifikasi dokumen identitas instance menggunakan PKCS7 tanda tangan dan sertifikat publik AWS DSA
  1. Hubungkan dengan instans.

  2. 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
    $ 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. Temukan sertifikat publik DSA untuk Wilayah Anda di AWS sertifikat publik misalnya tanda tangan dokumen identitas dan tambahkan konten ke file baru yang bernama certificate.

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

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.

  2. Ambil PKCS7 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/pkcs7).Content)
    IMDSv1
    PS C:\> $Signature = [Convert]::FromBase64String((Invoke-WebRequest http://169.254.169.254/latest/dynamic/instance-identity/pkcs7).Content)
  3. 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)
  4. Temukan sertifikat publik DSA untuk Wilayah Anda di AWS sertifikat publik misalnya tanda tangan dokumen identitas dan tambahkan konten ke file baru yang bernama certificate.pem.

  5. 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)))
  6. 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.

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

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.

  2. Ambil PKCS7 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/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. 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)
    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. Temukan sertifikat publik DSA untuk Wilayah Anda di AWS sertifikat publik misalnya tanda tangan dokumen identitas dan tambahkan konten ke file baru yang bernama certificate.pem.

  5. 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)))
  6. 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.

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

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

Untuk memvalidasi dokumen identitas instance menggunakan tanda tangan berenkode base64 dan sertifikat publik RSA AWS
  1. Hubungkan dengan instans.

  2. 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
  3. 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
  4. Tambahkan sertifikat publik RSA untuk Wilayah Anda di AWS sertifikat publik misalnya tanda tangan dokumen identitas dan tambahkan konten ke file baru yang bernama certificate.

  5. Ekstrak kunci publik dari sertifikat publik AWS RSA dan simpan ke file bernamakey.

    $ openssl x509 -pubkey -noout -in certificate >> key
  6. Gunakan perintah OpenSSL dgst untuk memverifikasi dokumen identitas instans.

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

    Jika tanda tangannya valid, fileVerification 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.

Untuk memvalidasi dokumen identitas instance menggunakan tanda tangan berenkode base64 dan sertifikat publik RSA AWS
  1. Hubungkan dengan instans.

  2. 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
    $ 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. 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
    $ 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. Tambahkan sertifikat publik RSA untuk Wilayah Anda di AWS sertifikat publik misalnya tanda tangan dokumen identitas dan tambahkan konten ke file baru yang bernama certificate.

  5. Ekstrak kunci publik dari sertifikat publik AWS RSA dan simpan ke file bernamakey.

    $ openssl x509 -pubkey -noout -in certificate >> key
  6. Gunakan perintah OpenSSL dgst untuk memverifikasi dokumen identitas instans.

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

    Jika tanda tangannya valid, fileVerification 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.

Untuk memvalidasi dokumen identitas instance menggunakan tanda tangan berenkode base64 dan sertifikat publik RSA AWS
  1. Hubungkan dengan instans.

  2. 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)
  3. 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)
  4. Tambahkan sertifikat publik RSA untuk Wilayah Anda di AWS sertifikat publik misalnya tanda tangan dokumen identitas dan tambahkan konten ke file baru yang bernama certificate.pem.

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

Untuk memvalidasi dokumen identitas instance menggunakan tanda tangan berenkode base64 dan sertifikat publik RSA AWS
  1. Hubungkan dengan instans.

  2. 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)
    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. 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)
    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. Tambahkan sertifikat publik RSA untuk Wilayah Anda di AWS sertifikat publik misalnya tanda tangan dokumen identitas dan tambahkan konten ke file baru yang bernama certificate.pem.

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

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

Untuk memverifikasi dokumen identitas instance menggunakan tanda tangan RSA-2048 dan sertifikat publik RSA-2048 AWS
  1. Hubungkan dengan instans.

  2. 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
  3. Tambahkan sertifikat publik RSA-2048 untuk Wilayah Anda di AWS sertifikat publik misalnya tanda tangan dokumen identitas dan tambahkan konten ke file baru yang bernama certificate.

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

Untuk memverifikasi dokumen identitas instance menggunakan tanda tangan RSA-2048 dan sertifikat publik RSA-2048 AWS
  1. Hubungkan dengan instans.

  2. 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
    $ 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. Tambahkan sertifikat publik RSA-2048 untuk Wilayah Anda di AWS sertifikat publik misalnya tanda tangan dokumen identitas dan tambahkan konten ke file baru yang bernama certificate.

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

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.

  2. 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)
  3. 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)
  4. Tambahkan sertifikat publik RSA-2048 untuk Wilayah Anda di AWS sertifikat publik misalnya tanda tangan dokumen identitas dan tambahkan konten ke file baru yang bernama certificate.pem.

  5. 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)))
  6. 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.

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

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.

  2. 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)
    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. 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)
    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. Tambahkan sertifikat publik RSA-2048 untuk Wilayah Anda di AWS sertifikat publik misalnya tanda tangan dokumen identitas dan tambahkan konten ke file baru yang bernama certificate.pem.

  5. 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)))
  6. 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.

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

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.