選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

驗證 Amazon EC2 執行個體的執行個體身分文件

焦點模式
驗證 Amazon EC2 執行個體的執行個體身分文件 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

如果您打算將 執行個體身分文件 的內容用於重要目的,您應該在使用它之前驗證其內容與真實性。

純文字 執行個體身分文件 會伴隨著三個雜湊和加密的簽章。您可以使用這些簽章來驗證 執行個體身分文件 的來源和真實性及其包含的資訊。提供的簽章如下:

  • Base64 編碼的簽章 – 此為使用 RSA 金鑰對加密之執行個體身分文件的 base64 編碼 SHA256 雜湊。

  • PKCS7 簽章 – 此為使用 DSA 金鑰對加密的 執行個體身分文件 SHA1 雜湊。

  • RSA-2048 簽章 – 此為使用 RSA-2048 金鑰對加密的執行個體身分文件 SHA256 雜湊。

每個簽章都可以在執行個體中繼資料的不同端點上使用。您可以根據您的雜湊和加密需求使用任何一個簽章。若要驗證簽章,您必須使用對應的 AWS 公有憑證。

選項 1:使用 PKCS7 簽章來驗證執行個體身分文件

本主題說明如何使用 PKCS7 簽章和 AWS DSA 公有憑證來驗證執行個體身分文件。

使用 PKCS7 簽章和 AWS DSA 公有憑證驗證執行個體身分文件
  1. 連線到執行個體。

  2. 從執行個體中繼資料擷取 PKCS7 簽章,並將其與所需的標頭和頁尾新增至名為 pkcs7 的新檔案。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. AWS 執行個體身分文件簽章的公有憑證 尋找您所在區域的 DSA 公有憑證,並將內容新增至名為 certificate 的新檔案。

  4. 使用 OpenSSL smime 命令以驗證簽章。包含指出需要驗證簽章的 -verify 選項,以及指出憑證不需要驗證的 -noverify 選項。

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

    如果簽章有效,則會出現 Verification successful 訊息。

    此命令也會將執行個體身分文件內容寫入名為 document 的新檔案。您可以使用下列命令,將來自執行個體中繼資料的執行個體身分文件內容與此檔案內容比較。

    $ 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

    如果無法驗證簽章,請聯絡 支援。

使用 PKCS7 簽章和 AWS DSA 公有憑證驗證執行個體身分文件
  1. 連線到執行個體。

  2. 從執行個體中繼資料擷取 PKCS7 簽章,並將其與所需的標頭和頁尾新增至名為 pkcs7 的新檔案。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. AWS 執行個體身分文件簽章的公有憑證 尋找您所在區域的 DSA 公有憑證,並將內容新增至名為 certificate 的新檔案。

  4. 使用 OpenSSL smime 命令以驗證簽章。包含指出需要驗證簽章的 -verify 選項,以及指出憑證不需要驗證的 -noverify 選項。

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

    如果簽章有效,則會出現 Verification successful 訊息。

    此命令也會將執行個體身分文件內容寫入名為 document 的新檔案。您可以使用下列命令,將來自執行個體中繼資料的執行個體身分文件內容與此檔案內容比較。

    $ 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

    如果無法驗證簽章,請聯絡 支援。

先決條件

此程序需要 System.Security Microsoft .NET Core 類別。若要將該類別新增至 PowerShell 工作階段,請執行下列命令。

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

此命令會將類別只新增至目前的 PowerShell 工作階段。如果您啟動新的工作階段,您必須再次執行命令。

使用 PKCS7 簽章和 AWS DSA 公有憑證驗證執行個體身分文件
  1. 連線到執行個體。

  2. 從執行個體中繼資料擷取 PKCS7 簽章,將其轉換為位元組陣列,然後再新增至名為 $Signature 的變數。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. 從執行個體中繼資料擷取純文字執行個體身分文件,將其轉換為位元組陣列,然後新增至名為 $Document 的變數。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. AWS 執行個體身分文件簽章的公有憑證 尋找您所在區域的 DSA 公有憑證,並將內容新增至名為 certificate.pem 的新檔案。

  5. 從憑證檔案擷取憑證,並將其存放在名為 $Store 的變數中。

    PS C:\> $Store = [Security.Cryptography.X509Certificates.X509Certificate2Collection]::new([Security.Cryptography.X509Certificates.X509Certificate2]::new((Resolve-Path certificate.pem)))
  6. 驗證簽章。

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

    如果簽章有效,則命令不會傳回任何輸出。如果無法驗證簽章,則命令會傳回 Exception calling "CheckSignature" with "2" argument(s): "Cannot find the original signer。如果無法驗證您的簽章,請聯絡 AWS 支援。

  7. 驗證執行個體身分文件的內容。

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

    如果執行個體身分文件的內容有效,則命令會傳回 True。如果無法驗證執行個體身分文件,請聯絡 AWS 支援。

先決條件

此程序需要 System.Security Microsoft .NET Core 類別。若要將該類別新增至 PowerShell 工作階段,請執行下列命令。

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

此命令會將類別只新增至目前的 PowerShell 工作階段。如果您啟動新的工作階段,您必須再次執行命令。

使用 PKCS7 簽章和 AWS DSA 公有憑證驗證執行個體身分文件
  1. 連線到執行個體。

  2. 從執行個體中繼資料擷取 PKCS7 簽章,將其轉換為位元組陣列,然後再新增至名為 $Signature 的變數。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. 從執行個體中繼資料擷取純文字執行個體身分文件,將其轉換為位元組陣列,然後新增至名為 $Document 的變數。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. AWS 執行個體身分文件簽章的公有憑證 尋找您所在區域的 DSA 公有憑證,並將內容新增至名為 certificate.pem 的新檔案。

  5. 從憑證檔案擷取憑證,並將其存放在名為 $Store 的變數中。

    PS C:\> $Store = [Security.Cryptography.X509Certificates.X509Certificate2Collection]::new([Security.Cryptography.X509Certificates.X509Certificate2]::new((Resolve-Path certificate.pem)))
  6. 驗證簽章。

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

    如果簽章有效,則命令不會傳回任何輸出。如果無法驗證簽章,則命令會傳回 Exception calling "CheckSignature" with "2" argument(s): "Cannot find the original signer。如果無法驗證您的簽章,請聯絡 AWS 支援。

  7. 驗證執行個體身分文件的內容。

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

    如果執行個體身分文件的內容有效,則命令會傳回 True。如果無法驗證執行個體身分文件,請聯絡 AWS 支援。

選項 2:使用 Base64 編碼簽章來驗證執行個體身分文件

本主題說明如何使用 base64 編碼簽章和 AWS RSA 公有憑證來驗證執行個體身分文件。

使用 base64 編碼簽章和 AWS RSA 公有憑證驗證執行個體身分文件
  1. 連線到執行個體。

  2. 從執行個體中繼資料擷取 base64 編碼的簽章,將其轉換為二進位,然後新增至名為 signature 的檔案。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. 從執行個體中繼資料擷取純文字 執行個體身分文件,並新增至名為 document 的檔案。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. AWS 執行個體身分文件簽章的公有憑證 尋找您所在區域的 RSA 公有憑證,並將內容新增至名為 certificate 的新檔案。

  5. 從 AWS RSA 公有憑證擷取公有金鑰,並將其儲存至名為 的檔案key

    $ openssl x509 -pubkey -noout -in certificate >> key
  6. 使用 OpenSSL dgst 命令來驗證 執行個體身分文件。

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

    如果簽章有效,則會出現 Verification successful 訊息。

    此命令也會將執行個體身分文件內容寫入名為 document 的新檔案。您可以使用下列命令,將來自執行個體中繼資料的執行個體身分文件內容與此檔案內容比較。

    $ 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

    如果無法驗證簽章,請聯絡 支援。

使用 base64 編碼簽章和 AWS RSA 公有憑證驗證執行個體身分文件
  1. 連線到執行個體。

  2. 從執行個體中繼資料擷取 base64 編碼的簽章,將其轉換為二進位,然後新增至名為 signature 的檔案。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. 從執行個體中繼資料擷取純文字 執行個體身分文件,並新增至名為 document 的檔案。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. AWS 執行個體身分文件簽章的公有憑證 尋找您所在區域的 RSA 公有憑證,並將內容新增至名為 certificate 的新檔案。

  5. 從 AWS RSA 公有憑證擷取公有金鑰,並將其儲存至名為 的檔案key

    $ openssl x509 -pubkey -noout -in certificate >> key
  6. 使用 OpenSSL dgst 命令來驗證 執行個體身分文件。

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

    如果簽章有效,則會出現 Verification successful 訊息。

    此命令也會將執行個體身分文件內容寫入名為 document 的新檔案。您可以使用下列命令,將來自執行個體中繼資料的執行個體身分文件內容與此檔案內容比較。

    $ 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

    如果無法驗證簽章,請聯絡 支援。

使用 base64 編碼簽章和 AWS RSA 公有憑證驗證執行個體身分文件
  1. 連線到執行個體。

  2. 從執行個體中繼資料擷取 base64 編碼的簽章,將其轉換為位元組陣列,然後新增至名為 $Signature 的變數。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. 從執行個體中繼資料擷取純文字執行個體身分文件,將其轉換為位元組陣列,然後新增至名為 $Document 的變數。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. AWS 執行個體身分文件簽章的公有憑證 尋找您所在區域的 RSA 公有憑證,並將內容新增至名為 certificate.pem 的新檔案。

  5. 驗證執行個體身分文件。

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

    如果簽章有效,則命令會傳回 True。如果無法驗證簽章,請聯絡 支援。

使用 base64 編碼簽章和 AWS RSA 公有憑證驗證執行個體身分文件
  1. 連線到執行個體。

  2. 從執行個體中繼資料擷取 base64 編碼的簽章,將其轉換為位元組陣列,然後新增至名為 $Signature 的變數。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. 從執行個體中繼資料擷取純文字執行個體身分文件,將其轉換為位元組陣列,然後新增至名為 $Document 的變數。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. AWS 執行個體身分文件簽章的公有憑證 尋找您所在區域的 RSA 公有憑證,並將內容新增至名為 certificate.pem 的新檔案。

  5. 驗證執行個體身分文件。

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

    如果簽章有效,則命令會傳回 True。如果無法驗證簽章,請聯絡 支援。

選項 3:使用 RSA-2048 簽章來驗證執行個體身分文件

本主題說明如何使用 RSA-2048 簽章和 AWS RSA-2048 公有憑證來驗證執行個體身分文件。

使用 RSA-2048 簽章和 AWS RSA-2048 公有憑證驗證執行個體身分文件
  1. 連線到執行個體。

  2. 從執行個體中繼資料擷取 RSA-2048 簽章,並將其與所需的標頭和頁尾新增至名為 rsa2048 的檔案。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. AWS 執行個體身分文件簽章的公有憑證 尋找您所在區域的 RSA-2048 公有憑證,並將內容新增至名為 certificate 的新檔案。

  4. 使用 OpenSSL smime 命令以驗證簽章。包含指出需要驗證簽章的 -verify 選項,以及指出憑證不需要驗證的 -noverify 選項。

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

    如果簽章有效,則會出現 Verification successful 訊息。如果無法驗證簽章,請聯絡 支援。

使用 RSA-2048 簽章和 AWS RSA-2048 公有憑證驗證執行個體身分文件
  1. 連線到執行個體。

  2. 從執行個體中繼資料擷取 RSA-2048 簽章,並將其與所需的標頭和頁尾新增至名為 rsa2048 的檔案。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. AWS 執行個體身分文件簽章的公有憑證 尋找您所在區域的 RSA-2048 公有憑證,並將內容新增至名為 certificate 的新檔案。

  4. 使用 OpenSSL smime 命令以驗證簽章。包含指出需要驗證簽章的 -verify 選項,以及指出憑證不需要驗證的 -noverify 選項。

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

    如果簽章有效,則會出現 Verification successful 訊息。如果無法驗證簽章,請聯絡 支援。

先決條件

此程序需要 System.Security Microsoft .NET Core 類別。若要將該類別新增至 PowerShell 工作階段,請執行下列命令。

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

此命令會將類別只新增至目前的 PowerShell 工作階段。如果您啟動新的工作階段,您必須再次執行命令。

使用 RSA-2048 簽章和 AWS RSA-2048 公有憑證驗證執行個體身分文件
  1. 連線到執行個體。

  2. 從執行個體中繼資料擷取 RSA-2048 簽章,將其轉換為位元組陣列,然後再新增至名為 $Signature 的變數。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. 從執行個體中繼資料擷取純文字執行個體身分文件,將其轉換為位元組陣列,然後新增至名為 $Document 的變數。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. AWS 執行個體身分文件簽章的公有憑證 尋找您所在區域的 RSA-2048 公有憑證,並將內容新增至名為 certificate.pem 的新檔案。

  5. 從憑證檔案擷取憑證,並將其存放在名為 $Store 的變數中。

    PS C:\> $Store = [Security.Cryptography.X509Certificates.X509Certificate2Collection]::new([Security.Cryptography.X509Certificates.X509Certificate2]::new((Resolve-Path certificate.pem)))
  6. 驗證簽章。

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

    如果簽章有效,則命令不會傳回任何輸出。如果無法驗證簽章,則命令會傳回 Exception calling "CheckSignature" with "2" argument(s): "Cannot find the original signer。如果無法驗證您的簽章,請聯絡 AWS 支援。

  7. 驗證執行個體身分文件的內容。

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

    如果執行個體身分文件的內容有效,則命令會傳回 True。如果無法驗證執行個體身分文件,請聯絡 AWS 支援。

先決條件

此程序需要 System.Security Microsoft .NET Core 類別。若要將該類別新增至 PowerShell 工作階段,請執行下列命令。

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

此命令會將類別只新增至目前的 PowerShell 工作階段。如果您啟動新的工作階段,您必須再次執行命令。

使用 RSA-2048 簽章和 AWS RSA-2048 公有憑證驗證執行個體身分文件
  1. 連線到執行個體。

  2. 從執行個體中繼資料擷取 RSA-2048 簽章,將其轉換為位元組陣列,然後再新增至名為 $Signature 的變數。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. 從執行個體中繼資料擷取純文字執行個體身分文件,將其轉換為位元組陣列,然後新增至名為 $Document 的變數。根據執行個體所使用的 IMDS 版本,使用下列其中一個命令。

    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. AWS 執行個體身分文件簽章的公有憑證 尋找您所在區域的 RSA-2048 公有憑證,並將內容新增至名為 certificate.pem 的新檔案。

  5. 從憑證檔案擷取憑證,並將其存放在名為 $Store 的變數中。

    PS C:\> $Store = [Security.Cryptography.X509Certificates.X509Certificate2Collection]::new([Security.Cryptography.X509Certificates.X509Certificate2]::new((Resolve-Path certificate.pem)))
  6. 驗證簽章。

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

    如果簽章有效,則命令不會傳回任何輸出。如果無法驗證簽章,則命令會傳回 Exception calling "CheckSignature" with "2" argument(s): "Cannot find the original signer。如果無法驗證您的簽章,請聯絡 AWS 支援。

  7. 驗證執行個體身分文件的內容。

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

    如果執行個體身分文件的內容有效,則命令會傳回 True。如果無法驗證執行個體身分文件,請聯絡 AWS 支援。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。