RSA-2048 署名を使用した インスタンスアイデンティティドキュメント の検証
このトピックでは、RSA-2048 署名と AWS RSA-2048 パブリック証明書を使用して、インスタンスアイデンティティドキュメントを検証する方法について説明します。
前提条件
この手順では、Microsoft .NET Core の System.Security
クラスが必要です。このクラスを PowerShell セッションに追加するには、次のコマンドを実行します。
PS C:\>
Add-Type -AssemblyName System.Security
注記
このコマンドは、現在の PowerShell セッションにのみクラスを追加します。別のセッションを開始する場合は、このコマンドをもう一度実行する必要があります。
RSA-2048 署名と AWS RSA-2048 パブリック証明書を使用してインスタンスアイデンティティドキュメントを検証するには
-
インスタンスに接続します。
-
インスタンスメタデータから RSA-2048 署名を取得し、バイトの配列に変換して、
$Signature
という名前の変数に追加します。インスタンスで使用されている IMDS のバージョンに応じて、次のいずれかのコマンドを使用します。 -
インスタンスメタデータからプレーンテキストのインスタンスアイデンティティドキュメントを取得し、バイトの配列に変換して、
$Document
という名前の変数に追加します。インスタンスで使用されている IMDS のバージョンに応じて、次のいずれかのコマンドを使用します。 -
AWS パブリック証明書でリージョン用に 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
を返します。署名を検証できない場合は、AWS Supportにお問い合わせください。 -
インスタンスアイデンティティドキュメントの内容を検証します。
PS C:\>
[Linq.Enumerable]::SequenceEqual($SignatureDocument
.ContentInfo.Content,$Document
)インスタンスアイデンティティドキュメントの内容が有効な場合、このコマンドは
True
を返します。インスタンスアイデンティティドキュメントを検証できない場合は、AWS Supportにお問い合わせください。