使用 RSA-2048 签名验证 实例身份文档
本主题说明如何使用 RSA-2048 签名和 Amazon RSA-2048 公有证书验证实例身份文档。
使用 RSA-2048 签名和 Amazon RSA-2048 公有证书验证实例身份文档。
-
连接到实例。
-
从实例元数据中检索 RSA-2048 签名,并将其连同所需的页眉和页脚添加到名为
rsa2048
的文件。根据实例使用的 IMDS 版本,使用以下命令之一。 -
在 Amazon 公有证书 中找到您所在区域的 RSA-2048 公有证书,并将内容添加到名为
certificate
的新文件。 -
使用 OpenSSL smime 命令来验证签名。包括
-verify
选项以指示需要验证签名,而包括-noverify
选项则指示不需要验证证书。$
openssl smime -verify -inrsa2048
-inform PEM -certfilecertificate
-noverify | tee document如果签名有效,则会显示
Verification successful
消息。如果无法验证签名,请联系 Amazon Web Services Support。
先决条件
此过程需要 System.Security
Microsoft .NET Core 类。要将该类添加到 PowerShell 会话中,请运行以下命令。
PS C:\>
Add-Type -AssemblyName System.Security
注意
此命令仅将该类添加到当前 PowerShell 会话。如果您启动新会话,则必须再次运行该命令。
使用 RSA-2048 签名和 Amazon RSA-2048 公有证书验证实例身份文档。
-
连接到实例。
-
从实例元数据中检索 RSA-2048 签名,将其转换为字节数组并添加到名为
$Signature
的变量。根据实例使用的 IMDS 版本,使用以下命令之一。 -
从实例元数据中检索纯文本实例身份文档,将其转换为字节数组并添加到名为
$Document
的变量。根据实例使用的 IMDS 版本,使用以下命令之一。 -
在 Amazon 公有证书 中找到您所在区域的 RSA-2048 公有证书,并将内容添加到名为
certificate.pem
的新文件。 -
从证书文件中提取证书并将其存储在名为
$Store
的变量中。PS C:\>
$Store
= [Security.Cryptography.X509Certificates.X509Certificate2Collection]::new([Security.Cryptography.X509Certificates.X509Certificate2]::new((Resolve-Pathcertificate.pem
))) -
验证签名。
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
。如果无法验证您的签名,请联系 Amazon Web Services Support。 -
验证实例身份文档的内容。
PS C:\>
[Linq.Enumerable]::SequenceEqual($SignatureDocument
.ContentInfo.Content,$Document
)如果实例身份文档的内容有效,则命令返回
True
。如果无法验证实例身份文档,请联系 Amazon Web Services Support。