

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Crea il blob binario per UEFI Secure Boot AWS
<a name="aws-binary-blob-creation"></a>

Puoi completare le fasi seguenti per personalizzare le variabili UEFI Secure Boot durante la creazione di un'AMI. La KEK che viene utilizzata in queste fasi è in vigore a partire da settembre 2021. Se Microsoft aggiorna la KEK, devi utilizzare la KEK più recente.

**Per creare il blob AWS binario**

1. Crea un elenco di firme PK vuoto.

   ```
   touch empty_key.crt
   cert-to-efi-sig-list empty_key.crt PK.esl
   ```

1. Scarica i certificati KEK.

   ```
   https://go.microsoft.com/fwlink/?LinkId=321185
   ```

1. Avvolgi i certificati KEK in un elenco di firme UEFI (`siglist`).

   ```
   sbsiglist --owner 77fa9abd-0359-4d32-bd60-28f4e78f784b --type x509 --output MS_Win_KEK.esl MicCorKEKCA2011_2011-06-24.crt 
   ```

1. Scarica i certificati db di Microsoft.

   ```
   https://www.microsoft.com/pkiops/certs/MicWinProPCA2011_2011-10-19.crt
   https://www.microsoft.com/pkiops/certs/MicCorUEFCA2011_2011-06-27.crt
   ```

1. Genera l'elenco delle firme db.

   ```
   sbsiglist --owner 77fa9abd-0359-4d32-bd60-28f4e78f784b --type x509 --output MS_Win_db.esl MicWinProPCA2011_2011-10-19.crt
   sbsiglist --owner 77fa9abd-0359-4d32-bd60-28f4e78f784b --type x509 --output MS_UEFI_db.esl MicCorUEFCA2011_2011-06-27.crt
   cat MS_Win_db.esl MS_UEFI_db.esl > MS_db.esl
   ```

1. L’Unified Extensible Firmware Interface Forum (UEFI) non fornisce più i file DBX. Ora sono forniti da Microsoft su GitHub. [Scarica l'ultimo aggiornamento DBX dal repository degli aggiornamenti di Microsoft Secure Boot all'indirizzo https://github.com/microsoft/ secureboot\$1objects.](https://github.com/microsoft/secureboot_objects)

1. Decomprimi il file update-binary firmato.

   Crea `SplitDbxContent.ps1` con il contenuto dello script seguente. [In alternativa, è possibile installare lo script da Gallery utilizzando. PowerShell ](https://www.powershellgallery.com/packages/SplitDbxContent/1.0) `Install-Script -Name SplitDbxContent`

   ```
   <#PSScriptInfo
    
   .VERSION 1.0
    
   .GUID ec45a3fc-5e87-4d90-b55e-bdea083f732d
    
   .AUTHOR Microsoft Secure Boot Team
    
   .COMPANYNAME Microsoft
    
   .COPYRIGHT Microsoft
    
   .TAGS Windows Security
    
   .LICENSEURI
    
   .PROJECTURI
    
   .ICONURI
    
   .EXTERNALMODULEDEPENDENCIES
    
   .REQUIREDSCRIPTS
    
   .EXTERNALSCRIPTDEPENDENCIES
    
   .RELEASENOTES
   Version 1.0: Original published version.
    
   #>
   
   <#
   .DESCRIPTION
    Splits a DBX update package into the new DBX variable contents and the signature authorizing the change.
    To apply an update using the output files of this script, try:
    Set-SecureBootUefi -Name dbx -ContentFilePath .\content.bin -SignedFilePath .\signature.p7 -Time 2010-03-06T19:17:21Z -AppendWrite'
   .EXAMPLE
   .\SplitDbxAuthInfo.ps1 DbxUpdate_x64.bin
   #>
   
   
   # Get file from script input
   $file  = Get-Content -Encoding Byte $args[0]
   
   # Identify file signature
   $chop = $file[40..($file.Length - 1)]
   if (($chop[0] -ne 0x30) -or ($chop[1] -ne 0x82 )) {
       Write-Error "Cannot find signature"
       exit 1
   }
   
   # Signature is known to be ASN size plus header of 4 bytes
   $sig_length = ($chop[2] * 256) + $chop[3] + 4
   $sig = $chop[0..($sig_length - 1)]
   
   if ($sig_length -gt ($file.Length + 40)) {
       Write-Error "Signature longer than file size!"
       exit 1
   }
   
   # Content is everything else
   $content = $file[0..39] + $chop[$sig_length..($chop.Length - 1)]
   
   # Write signature and content to files
   Set-Content -Encoding Byte signature.p7 $sig
   Set-Content -Encoding Byte content.bin $content
   ```

   Utilizza lo script per decomprimere i file DBX firmati.

   ```
   PS C:\Windows\system32> SplitDbxContent.ps1 .\dbx.bin
   ```

   In questo modo vengono creati due file: `signature.p7` e `content.bin`. Utilizza `content.bin` nella fase successiva.

1. Crea un archivio delle variabili UEFI usando lo script `uefivars.py`.

   ```
   ./uefivars.py -i none -o aws -O uefiblob-microsoft-keys-empty-pk.bin -P ~/PK.esl -K ~/MS_Win_KEK.esl --db ~/MS_db.esl  --dbx ~/content.bin 
   ```

1. Controlla il blob binario e l'archivio delle variabili UEFI.

   ```
   ./uefivars.py -i aws -I uefiblob-microsoft-keys-empty-pk.bin -o json | less
   ```

1. È possibile aggiornare il blob passandolo nuovamente allo stesso strumento.

   ```
   ./uefivars.py -i aws -I uefiblob-microsoft-keys-empty-pk.bin -o aws -O uefiblob-microsoft-keys-empty-pk.bin -P ~/PK.esl -K ~/MS_Win_KEK.esl --db ~/MS_db.esl  --dbx ~/content.bin
   ```

   Output previsto

   ```
   Replacing PK
   Replacing KEK
   Replacing db
   Replacing dbx
   ```