Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
使用 base64 编码的签名验证 实例身份文档
本主题说明如何使用 base64 编码的签名和 Amazon RSA 公有证书验证实例身份文档。
使用 base64 编码的签名和 Amazon RSA 公有证书验证实例身份文档
-
连接到实例。
-
从实例元数据中检索 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
-
从实例元数据中检索明文 实例身份文档,并将其添加到名为 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
-
在 Amazon 公有证书 中找到您所在区域的 RSA 公有证书,并将内容添加到名为 certificate
的新文件。
-
从 Amazon RSA 公有证书中提取公有密钥,并将其保存到名为 key
的文件。
$
openssl x509 -pubkey -noout -in certificate
>> key
-
使用 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
如果无法验证签名,请联系 Amazon Web Services Support。
使用 base64 编码的签名和 Amazon 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)
-
在 Amazon 公有证书 中找到您所在区域的 RSA 公有证书,并将内容添加到名为 certificate.pem
的新文件。
-
验证实例身份文档。
PS C:\>
[Security.Cryptography.X509Certificates.X509Certificate2]::new((Resolve-Path certificate.pem
)).PublicKey.Key.VerifyData($Document
, 'SHA256', $Signature
)
如果签名有效,则命令返回 True
。如果无法验证签名,请联系 Amazon Web Services Support。