本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Base64 編碼簽章驗證 執行個體身分文件
本主題說明如何使用 base64 編碼的簽章和 AWS RSA 公用憑證來驗證執行個體身分識別文件。
使用 base64 編碼的簽名和 AWS RSA 公用憑證驗證執行個體身分識別文件
-
連線到執行個體。
-
從執行個體中繼資料擷取 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)
-
從執行個體中繼資料擷取純文字執行個體身分文件,將其轉換為位元組陣列,然後新增至名為 $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)
-
在 AWS 公開憑證 尋找您所在區域的 RSA 公有憑證,並將內容新增至名為 certificate.pem
的新檔案。
-
驗證執行個體身分文件。
PS C:\>
[Security.Cryptography.X509Certificates.X509Certificate2]::new((Resolve-Path certificate.pem
)).PublicKey.Key.VerifyData($Document
, 'SHA256', $Signature
)
如果簽章有效,則命令會傳回 True
。如果無法驗證簽章,請聯絡 AWS Support。