使用 PKCS7 签名验证 实例身份文档
本主题说明如何使用 PKCS7 签名和 AWS DSA 公有证书验证实例身份文档。
先决条件
此过程需要 System.Security
Microsoft .NET Core 类。要将该类添加到 PowerShell 会话中,请运行以下命令。
PS C:\>
Add-Type -AssemblyName System.Security
注意
此命令仅将该类添加到当前 PowerShell 会话。如果您启动新会话,则必须再次运行该命令。
使用 PKCS7 签名和 AWS DSA 公有证书验证实例身份文档
-
连接到实例。
-
从实例元数据中检索 PKCS7 签名,将其转换为字节数组并添加到名为
$Signature
的变量。根据实例使用的 IMDS 版本,使用以下命令之一。 -
从实例元数据中检索纯文本实例身份文档,将其转换为字节数组并添加到名为
$Document
的变量。根据实例使用的 IMDS 版本,使用以下命令之一。 -
在 AWS 公有证书 中找到您所在区域的 DSA 公有证书,并将内容添加到名为
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
。如果无法验证您的签名,请联系 AWS Support。 -
验证实例身份文档的内容。
PS C:\>
[Linq.Enumerable]::SequenceEqual($SignatureDocument
.ContentInfo.Content,$Document
)如果实例身份文档的内容有效,则命令返回
True
。如果无法验证实例身份文档,请联系 AWS Support。