Uso de la firma codificada en base64 para verificar el Documentos de identidad de instancia - Amazon Elastic Compute Cloud

Uso de la firma codificada en base64 para verificar el Documentos de identidad de instancia

En este tema, se explica cómo verificar el documento de identidad de la instancia mediante la firma codificada en base64 y el certificado público de RSA de AWS.

Para validar el documento de identidad de la instancia mediante la firma codificada en base64 y el certificado público del RSA de AWS
  1. Conéctese a la instancia.

  2. Recupere la firma codificada en base64 de los metadatos de la instancia, conviértala a binario y agréguela a un archivo denominado signature. Utilice uno de los siguientes comandos dependiendo de la versión IMDS utilizada por la instancia.

    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
  3. Recupere el Documentos de identidad de instancia de texto sin formato de los metadatos de la instancia y agréguelo a un archivo denominado document. Utilice uno de los siguientes comandos dependiendo de la versión IMDS utilizada por la instancia.

    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
  4. Busque el certificado público RSA para su región en Certificados públicos de AWS y agregue el contenido a un archivo nuevo denominado certificate.

  5. Extraiga la clave pública del certificado público RSA de AWS y guárdela en un archivo denominado key.

    $ openssl x509 -pubkey -noout -in certificate >> key
  6. Utilice el comando OpenSSL dgst para verificar el documento de identidad de instancia.

    $ openssl dgst -sha256 -verify key -signature signature document

    Si la firma es válida, aparecerá el mensaje Verification successful.

    El comando también escribe el contenido del documento de identidad de la instancia en un nuevo archivo llamado document. Puede comparar el contenido del documento de identidad de la instancia de los metadatos de la instancia con el contenido de este archivo mediante los siguientes comandos.

    $ 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

    Si no se puede verificar la firma, póngase en contacto con AWS Support.

Para validar el documento de identidad de la instancia mediante la firma codificada en base64 y el certificado público del RSA de AWS
  1. Conéctese a la instancia.

  2. Recupere la firma codificada en base64 de los metadatos de instancia, conviértala en una matriz de bytes y agréguela a la variable denominada $Signature. Utilice uno de los siguientes comandos dependiendo de la versión IMDS utilizada por la instancia.

    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)
  3. Recupere el documento de identidad de instancia de texto sin formato de los metadatos de instancia, conviértalo en una matriz de bytes y agréguelo a una variable denominada $Document. Utilice uno de los siguientes comandos dependiendo de la versión IMDS utilizada por la instancia.

    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)
  4. Busque el certificado público RSA para su región en Certificados públicos de AWS y agregue el contenido a un archivo nuevo denominado certificate.pem.

  5. Verifique el documento de identidad de la instancia.

    PS C:\> [Security.Cryptography.X509Certificates.X509Certificate2]::new((Resolve-Path certificate.pem)).PublicKey.Key.VerifyData($Document, 'SHA256', $Signature)

    Si la firma es válida, el comando devuelve True. Si no se puede verificar la firma, póngase en contacto con AWS Support.