

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à.

# Comportamento di avvio delle istanze con le modalità di avvio di Amazon EC2
<a name="ami-boot"></a>

All'avvio di un computer, il primo software in esecuzione è responsabile dell'inizializzazione della piattaforma e fornisce un'interfaccia al sistema operativo per eseguire operazioni specifiche della piattaforma.

Amazon EC2 supporta due varianti del software in modalità di avvio: Unified Extensible Firmware Interface (UEFI) e BIOS legacy.

**Possibili parametri della modalità di avvio su un'AMI**  
Un'AMI può avere uno dei seguenti valori per i parametri della modalità di avvio: `uefi`, `legacy-bios` o `uefi-preferred`. Il parametro della modalità di avvio dell'AMI è facoltativo. Poiché non AMIs dispongono di parametri per la modalità di avvio, le istanze avviate da questi AMIs utilizzano il valore della modalità di avvio predefinito del tipo di istanza.

**Scopo del parametro della modalità di avvio dell'AMI**  
Il parametro della modalità di avvio dell'AMI segnala ad Amazon EC2 quale modalità di avvio utilizzare quando si avvia un'istanza. Quando il parametro della modalità di avvio è impostato su `uefi`, EC2 tenta di avviare l'istanza su UEFI. Se il sistema operativo non è configurato per supportare UEFI, l'avvio dell'istanza avrà esito negativo.

**Parametro della modalità di avvio UEFI Preferred**  
È possibile creare un sistema AMIs che supporti sia UEFI che Legacy BIOS utilizzando il parametro della modalità di `uefi-preferred` avvio. Se il parametro della modalità di avvio è impostato su `uefi-preferred` e se il tipo di istanza supporta UEFI, l'istanza viene avviata su UEFI. Se il tipo di istanza non supporta UEFI, l'istanza viene avviata su BIOS legacy.

**avvertimento**  
Alcune funzionalità, ad esempio l'avvio protetto UEFI, sono disponibili solo per le istanze con modalità di avvio UEFI. Se utilizzi il parametro della modalità di avvio dell'AMI `uefi-preferred` con un tipo di istanza che non supporta UEFI, l'istanza viene avviata come BIOS legacy, con la funzionalità dipendente da UEFI disabilitata. Se fai affidamento sulla disponibilità di una funzionalità dipendente da UEFI, imposta il parametro della modalità di avvio dell'AMI su `uefi`.

**Modalità di avvio predefinite per tipi di istanza**
+ Tipi di istanza Graviton: UEFI
+ Tipi di istanze Intel e AMD: BIOS Legacy

**Supporto di zona**  
L’avvio UEFI non è supportato nelle zone Wavelength.

**Topics**
+ [

# Requisiti per lanciare un'istanza EC2 in modalità di avvio UEFI
](launch-instance-boot-mode.md)
+ [

# Determinare il parametro della modalità di avvio di un'AMI di Amazon EC2
](ami-boot-mode.md)
+ [

# Determinare le modalità di avvio supportate di un tipo di istanza EC2
](instance-type-boot-mode.md)
+ [

# Determinare la modalità di avvio di un'istanza EC2
](instance-boot-mode.md)
+ [

# Determinare la modalità di avvio del sistema operativo per l'istanza EC2
](os-boot-mode.md)
+ [

# Impostare la modalità di avvio di un'AMI Amazon EC2
](set-ami-boot-mode.md)
+ [

# Variabili UEFI per istanze Amazon EC2
](uefi-variables.md)
+ [

# UEFI Secure Boot per istanze Amazon EC2
](uefi-secure-boot.md)

# Requisiti per lanciare un'istanza EC2 in modalità di avvio UEFI
<a name="launch-instance-boot-mode"></a>

La modalità di avvio di un'istanza è determinata dalla configurazione dell'AMI, dal sistema operativo in essa contenuto e dal tipo di istanza. Per lanciare un'istanza in modalità di avvio UEFI, è necessario soddisfare i seguenti requisiti.

**AMI**  
L'AMI deve essere configurata per l'UEFI nel modo seguente:  
+ **Sistema operativo**: il sistema operativo contenuto nell'AMI deve essere configurato per utilizzare UEFI; in caso contrario, l'avvio dell'istanza avrà esito negativo. Per ulteriori informazioni, consulta [Determinare la modalità di avvio del sistema operativo per l'istanza EC2](os-boot-mode.md).
+ **Parametro della modalità di avvio dell'AMI**: il parametro della modalità di avvio dell'AMI deve essere impostato su `uefi` o `uefi-preferred`. Per ulteriori informazioni, consulta [Determinare il parametro della modalità di avvio di un'AMI di Amazon EC2](ami-boot-mode.md).
**Linux**: i seguenti sistemi Linux AMIs supportano UEFI:  
+ Amazon Linux 2023
+ Amazon Linux 2 (solo tipi di istanze Graviton)
Per altri Linux AMIs, è necessario [configurare l'AMI](set-ami-boot-mode.md), importare l'AMI tramite [VM Import/Export o importare](https://docs.aws.amazon.com/vm-import/latest/userguide/) l'AMI tramite. [CloudEndure](https://docs.cloudendure.com/)  
**Windows**: i seguenti sistemi Windows AMIs supportano UEFI:  
+ Windows\$1Server-2025-\$1 (ad eccezione del prefisso del nome) AMIs `BIOS-`
+ TPM-Windows\$1Server-2022-English-Full-Base
+ TPM-Windows\$1Server-2022-English-Core-Base
+ TPM-Windows\$1Server-2019-English-Full-Base
+ TPM-Windows\$1Server-2019-English-Core-Base
+ TPM-Windows\$1Server-2016-English-Full-Base
+ TPM-Windows\$1Server-2016-English-Core-Base

**Tipo di istanza**  
Tutte le istanze basate sul sistema AWS Nitro supportano sia UEFI che Legacy BIOS, ad eccezione delle seguenti: istanze bare metal, G4ad, P4, u-3tb1, u-6tb1, u-9tb1, u-12tb1 DL1, u-18tb1, u-24tb1 e. VT1 Per ulteriori informazioni, consulta [Determinare le modalità di avvio supportate di un tipo di istanza EC2](instance-type-boot-mode.md).

La tabella seguente mostra che la modalità di avvio di un'istanza (indicata dalla colonna **Modalità di avvio dell'istanza risultante**) è determinata dalla combinazione del parametro della modalità di avvio dell'AMI (colonna 1), della configurazione della modalità di avvio del sistema operativo contenuto nell'AMI (colonna 2) e del supporto della modalità di avvio del tipo di istanza (colonna 3).


| Parametro della modalità di avvio dell'AMI | Configurazione della modalità di avvio del sistema operativo | Supporto della modalità di avvio del tipo di istanza | Modalità di avvio dell'istanza risultante | 
| --- | --- | --- | --- | 
| UEFI | UEFI | UEFI | UEFI | 
| BIOS legacy | BIOS legacy | BIOS legacy | BIOS legacy | 
| UEFI Preferred | UEFI | UEFI | UEFI | 
| UEFI Preferred | UEFI | UEFI e BIOS legacy | UEFI | 
| UEFI Preferred | BIOS legacy | BIOS legacy | BIOS legacy | 
| UEFI Preferred | BIOS legacy | UEFI e BIOS legacy | BIOS legacy | 
| Nessuna modalità di avvio specificata - ARM | UEFI | UEFI | UEFI | 
| Nessuna modalità di avvio specificata - x86 | BIOS legacy | UEFI e BIOS legacy | BIOS legacy | 

# Determinare il parametro della modalità di avvio di un'AMI di Amazon EC2
<a name="ami-boot-mode"></a>

Il parametro della modalità di avvio dell'AMI è facoltativo. Un'AMI può avere uno dei seguenti valori per i parametri della modalità di avvio: `uefi`, `legacy-bios` o `uefi-preferred`.

 AMIs Alcune non dispongono di un parametro per la modalità di avvio. Quando un'AMI non dispone di parametri della modalità di avvio, le istanze avviate da tale AMI utilizzano il valore predefinito del tipo di istanza, vale a dire `uefi` su Graviton, e `legacy-bios` sui tipi di istanza Intel e AMD.

------
#### [ Console ]

**Per determinare il parametro della modalità di avvio di un’AMI**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel riquadro di navigazione **AMIs**, scegli, quindi seleziona l'AMI.

1. Ispeziona il campo **Modalità di avvio**.
   + Il valore **uefi** indica che l'AMI supporta UEFI.
   + Il valore **uefi-preferred** indica che l'AMI supporta sia UEFI sia BIOS legacy.
   + Se non è presente un valore, le istanze avviate dall'AMI utilizzano il valore predefinito del tipo di istanza.

**Per determinare il parametro della modalità di avvio di un’AMI all’avvio di un’istanza**  
Quando si avvia un'istanza utilizzando la procedura guidata di avvio dell'istanza, nella fase di selezione dell'AMI, controlla il campo **Boot mode (Modalità di avvio)**. Per ulteriori informazioni, consulta [Immagini di applicazioni e sistema operativo (Amazon Machine Image)](ec2-instance-launch-parameters.md#liw-ami).

------
#### [ AWS CLI ]

**Per determinare il parametro della modalità di avvio di un’AMI**  
Utilizza il comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) per determinare la modalità di avvio di un'AMI.

```
aws ec2 describe-images \
    --region us-east-1 \
    --image-id ami-0abcdef1234567890 \
    --query Images[].BootMode \
    --output text
```

Di seguito è riportato un output di esempio.

```
uefi
```

Nell’output, il valore `uefi` indica che l’AMI supporta UEFI. Il valore `uefi-preferred` indica che l'AMI supporta sia UEFI che BIOS legacy. Se non è presente un valore, le istanze avviate dall'AMI utilizzano il valore predefinito del tipo di istanza.

------
#### [ PowerShell ]

**Per determinare il parametro della modalità di avvio di un’AMI**  
Utilizza il cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) per determinare la modalità di avvio di un’AMI.

```
Get-EC2Image -Region us-east-1 `
    -ImageId ami-0abcdef1234567890 | Format-List Name, BootMode, TpmSupport
```

Di seguito è riportato un output di esempio.

```
Name       : TPM-Windows_Server-2016-English-Full-Base-2023.05.10
BootMode   : uefi
TpmSupport : v2.0
```

Nell’output, il valore `BootMode` indica la modalità di avvio dell’AMI. Il valore `uefi` indica che l'AMI supporta UEFI. Il valore `uefi-preferred` indica che l'AMI supporta sia UEFI che BIOS legacy. Se non è presente un valore, le istanze avviate dall'AMI utilizzano il valore predefinito del tipo di istanza.

------

# Determinare le modalità di avvio supportate di un tipo di istanza EC2
<a name="instance-type-boot-mode"></a>

Puoi determinare le modalità di avvio supportate di un tipo di istanza.

La console Amazon EC2 non mostra le modalità di avvio supportate da un tipo di istanza.

------
#### [ AWS CLI ]

Utilizza il comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html) per determinare le modalità di avvio supportate di un tipo di istanza. Il parametro `--query` filtra l'output per riportare solo le modalità di avvio supportate.

L’esempio seguente mostra che il tipo di istanza specificato supporta entrambe le modalità di avvio UEFI e Legacy BIOS.

```
aws ec2 describe-instance-types \
    --instance-types m5.2xlarge \
    --query "InstanceTypes[*].SupportedBootModes"
```

Di seguito è riportato un output di esempio.

```
[
    [
        "legacy-bios",
        "uefi"
    ]
]
```

L'esempio seguente mostra che `t2.xlarge` supporta solo BIOS Legacy.

```
aws ec2 describe-instance-types \
    --instance-types t2.xlarge \
    --query "InstanceTypes[*].SupportedBootModes"
```

Di seguito è riportato un output di esempio.

```
[
    [
        "legacy-bios"
    ]
]
```

------
#### [ PowerShell ]

Utilizza il cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceType.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceType.html) per determinare le modalità di avvio supportate di un tipo di istanza.

L'esempio seguente mostra che `m5.2xlarge` supporta entrambe le modalità di avvio UEFI e BIOS Legacy.

```
Get-EC2InstanceType -InstanceType m5.2xlarge | Format-List InstanceType, SupportedBootModes
```

Di seguito è riportato un output di esempio.

```
InstanceType       : m5.2xlarge
SupportedBootModes : {legacy-bios, uefi}
```

L'esempio seguente mostra che `t2.xlarge` supporta solo BIOS Legacy.

```
Get-EC2InstanceType -InstanceType t2.xlarge | Format-List InstanceType, SupportedBootModes
```

Di seguito è riportato un output di esempio.

```
InstanceType       : t2.xlarge
SupportedBootModes : {legacy-bios}
```

------

**Per determinare i tipi di istanza che supportano UEFI**  
Puoi determinare i tipi di istanza che supportano UEFI. La console Amazon EC2 non mostra il supporto UEFI di un tipo di istanza.

------
#### [ AWS CLI ]

I tipi di istanza disponibili variano in base alla Regione AWS. Per visualizzare i tipi di istanza disponibili che supportano UEFI in una regione, usa il [describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html)comando. Includi il parametro `--filters` per assegnare i risultati ai tipi di istanza che supportano UEFI e il parametro `--query` per assegnare l'output al valore di `InstanceType`.

```
aws ec2 describe-instance-types \
    --filters Name=supported-boot-mode,Values=uefi \
    --query "InstanceTypes[*].[InstanceType]" --output text | sort
```

------
#### [ PowerShell ]

I tipi di istanza disponibili variano in base alla Regione AWS. Per visualizzare i tipi di istanza disponibili che supportano UEFI in una regione, utilizzare il [Get-EC2InstanceType](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceType.html)cmdlet.

```
Get-EC2InstanceType | `
	Where-Object {$_.SupportedBootModes -Contains "uefi"} | `
	Sort-Object InstanceType | `
	Format-Table InstanceType -GroupBy CurrentGeneration
```

------

**Per determinare i tipi di istanza che supportano UEFI Secure Boot e mantengono le variabili non volatili**  
Le istanze bare metal non supportano UEFI Secure Boot e le variabili non volatili, quindi questi esempi le escludono dall'output. Per informazioni su UEFI Secure Boot, consulta [UEFI Secure Boot per istanze Amazon EC2](uefi-secure-boot.md)..

------
#### [ AWS CLI ]

Utilizza il [describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html)comando ed escludi le istanze bare metal dall'output.

```
aws ec2 describe-instance-types \
    --filters Name=supported-boot-mode,Values=uefi Name=bare-metal,Values=false \
    --query "InstanceTypes[*].[InstanceType]" \
    --output text | sort
```

------
#### [ PowerShell ]

Utilizzate il [Get-EC2InstanceType](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceType.html)cmdlet ed escludete le istanze bare metal dall'output.

```
Get-EC2InstanceType | `
    Where-Object { `
        $_.SupportedBootModes -Contains "uefi" -and `
        $_.BareMetal -eq $False
        } | `
    Sort-Object InstanceType  | `
    Format-Table InstanceType, SupportedBootModes, BareMetal, `
        @{Name="SupportedArchitectures"; Expression={$_.ProcessorInfo.SupportedArchitectures}}
```

------

# Determinare la modalità di avvio di un'istanza EC2
<a name="instance-boot-mode"></a>

La modalità di avvio di un'istanza viene visualizzata nel campo **Modalità di avvio** della console Amazon EC2 e dal parametro `currentInstanceBootMode` nella AWS CLI.

Quando viene avviata un'istanza, il valore per il parametro della modalità di avvio è determinato dal valore del parametro della modalità di avvio dell'AMI utilizzata per avviarla, come segue:
+ Un'AMI con un parametro della modalità di avvio di `uefi` crea un'istanza con un parametro `currentInstanceBootMode` di `uefi`.
+ Un'AMI con un parametro della modalità di avvio di `legacy-bios` crea un'istanza con un parametro `currentInstanceBootMode` di ` legacy-bios`.
+ Un'AMI con un parametro della modalità di avvio di `uefi-preferred` crea un'istanza con un parametro`currentInstanceBootMode` di `uefi` se il tipo di istanza supporta UEFI. In caso contrario, crea un'istanza con un parametro `currentInstanceBootMode` di `legacy-bios`.
+ Un'AMI senza alcun valore per il parametro della modalità di avvio crea un'istanza con un parametro `currentInstanceBootMode` che dipende dal fatto che l'architettura AMI sia ARM o x86 e dalla modalità di avvio supportata del tipo di istanza. La modalità di avvio predefinita è `uefi` su istanze Graviton e `legacy-bios` su tipi di istanza Intel e AMD.

------
#### [ Console ]

**Per determinare la modalità di avvio di un’istanza**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel pannello di navigazione, scegli **Instances (Istanze)** e seleziona l'istanza desiderata.

1. Nella scheda **Details (Dettagli)** controlla il campo **Boot mode (Modalità di avvio)**.

------
#### [ AWS CLI ]

**Per determinare la modalità di avvio di un’istanza**  
Utilizza il comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) per determinare la modalità di avvio di un'istanza. Puoi inoltre determinare la modalità di avvio dell'AMI utilizzata per creare l'istanza. 

```
aws ec2 describe-instances \
    --region us-east-1 \
    --instance-ids i-1234567890abcdef0 \
    --query Reservations[].Instances[].BootMode \
    --output text
```

Di seguito è riportato un output di esempio.

```
uefi
```

------
#### [ PowerShell ]

**Per determinare la modalità di avvio di un’istanza**  
Utilizza il cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) per determinare la modalità di avvio di un’istanza. Puoi inoltre determinare la modalità di avvio dell'AMI utilizzata per creare l'istanza. 

```
(Get-EC2Instance `
    -InstanceId i-1234567890abcdef0).Instances | Format-List BootMode, CurrentInstanceBootMode, InstanceType, ImageId
```

Di seguito è riportato un output di esempio.

```
BootMode                : uefi
CurrentInstanceBootMode : uefi
InstanceType            : c5a.large
ImageId                 : ami-0abcdef1234567890
```

------

# Determinare la modalità di avvio del sistema operativo per l'istanza EC2
<a name="os-boot-mode"></a>

La modalità di avvio dell'AMI indica ad Amazon EC2 quale modalità di avvio utilizzare per avviare un'istanza. Per verificare se il sistema operativo dell'istanza è configurato per UEFI, devi connetterti all'istanza tramite SSH (istanze Linux) o RDP (istanze Windows).

Consulta le istruzioni relative al sistema operativo della tua istanza.

## Linux
<a name="os-boot-mode-linux"></a>

**Per determinare la modalità di avvio del sistema operativo dell'istanza**

1. [Connettiti alla tua istanza Linux usando SSH](connect-linux-inst-ssh.md).

1. Per visualizzare la modalità di avvio del sistema operativo, prova una delle seguenti operazioni:
   + Eseguire il seguente comando seguente.

     ```
     [ec2-user ~]$ sudo /usr/sbin/efibootmgr
     ```

     Output previsto da un'istanza avviata in modalità di avvio UEFI

     ```
     BootCurrent: 0001
     Timeout: 0 seconds
     BootOrder: 0000,0001
     Boot0000* UiApp
     Boot0001* UEFI Amazon Elastic Block Store vol-xyz
     ```
   + Esegui il comando seguente per verificare l'esistenza della directory `/sys/firmware/efi`. Questa directory esiste solo se l'istanza viene avviata utilizzando UEFI. Se la directory non esiste, il comando restituisce `Legacy BIOS Boot Detected`.

     ```
     [ec2-user ~]$ [ -d /sys/firmware/efi ] && echo "UEFI Boot Detected" || echo "Legacy BIOS Boot Detected"
     ```

     Output previsto da un'istanza avviata in modalità di avvio UEFI

     ```
     UEFI Boot Detected
     ```

     Output previsto da un'istanza avviata in modalità di avvio BIOS Legacy

     ```
     Legacy BIOS Boot Detected
     ```
   + Esegui il comando seguente per verificare che EFI venga visualizzata nell'output `dmesg`.

     ```
     [ec2-user ~]$ dmesg | grep -i "EFI"
     ```

     Output previsto da un'istanza avviata in modalità di avvio UEFI

     ```
     [    0.000000] efi: Getting EFI parameters from FDT:
     [    0.000000] efi: EFI v2.70 by EDK II
     ```

## Windows
<a name="os-boot-mode-windows"></a>

**Per determinare la modalità di avvio del sistema operativo dell'istanza**

1. [Connettiti all'istanza Windows utilizzando RDP](connecting_to_windows_instance.md).

1. Vai a **System Information (Informazioni di sistema)** e controlla la riga **BIOS Mode (Modalità BIOS)**.  
![\[Finestra delle informazioni di sistema che mostra la riga della modalità BIOS selezionata. Il valore della modalità BIOS è Legacy.\]](http://docs.aws.amazon.com/it_it/AWSEC2/latest/UserGuide/images/BIOS-mode-win.png)

# Impostare la modalità di avvio di un'AMI Amazon EC2
<a name="set-ami-boot-mode"></a>

Per impostazione predefinita, un’AMI eredita la modalità di avvio dell’istanza EC2 utilizzata per creare l’AMI. Ad esempio, se crei un’AMI da un’istanza EC2 in esecuzione su BIOS legacy, la modalità di avvio della nuova AMI è `legacy-bios`. Se crei un’AMI da un’istanza EC2 con modalità di avvio `uefi-preferred`, la modalità di avvio della nuova AMI sarà `uefi-preferred`.

Quando registri un’AMI, puoi impostare la modalità di avvio dell’AMI su `uefi`, `legacy-bios` o `uefi-preferred`.

Quando la modalità di avvio dell'AMI è impostata su `uefi-preferred`, l'istanza si avvia come segue: 
+ Per i tipi di istanza che supportano sia UEFI che BIOS legacy (ad esempio `m5.large`), l'istanza si avvia utilizzando UEFI.
+ Per i tipi di istanza che supportano solo BIOS legacy (ad esempio `m4.large`), l'istanza si avvia utilizzando tale modalità.

Se imposti la modalità di avvio dell'AMI su `uefi-preferred`, il sistema operativo deve essere in grado di supportare sia la modalità UEFI che BIOS legacy.

Per convertire un’istanza esistente basata su BIOS Legacy in UEFI o un’istanza esistente basata su UEFI in BIOS Legacy, devi innanzitutto modificare il volume e il sistema operativo dell’istanza di modo che supportino la modalità di avvio selezionata. Creare quindi uno snapshot del volume. Infine, crea un’AMI dallo snapshot

**Considerazioni**
+ L'impostazione del parametro della modalità di avvio dell'AMI non configura automaticamente il sistema operativo per la modalità di avvio specificata. Devi prima apportare le modifiche adeguate al volume e al sistema operativo dell’istanza per supportare l’avvio tramite la modalità di avvio selezionata. Altrimenti, l’AMI risultante non è utilizzabile. Ad esempio, se state convertendo un'istanza di Windows basata su BIOS legacy in UEFI, potete utilizzare lo strumento [MBR2GPT](https://learn.microsoft.com/en-us/windows/deployment/mbr-to-gpt) di Microsoft per convertire il disco di sistema da MBR a GPT. Le modifiche necessarie sono specifiche del sistema operativo. Per ulteriori informazioni, consulta il manuale del sistema operativo in uso.
+ Non puoi utilizzare il comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) o il cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) per creare un’AMI che supporti sia [NitroTPM](nitrotpm.md) che UEFI Preferred.
+ Alcune funzionalità, ad esempio l'avvio protetto UEFI, sono disponibili solo per le istanze con modalità di avvio UEFI. Se usi il parametro della modalità di avvio dell’AMI `uefi-preferred` con un tipo di istanza che non supporta UEFI, l’istanza viene avviata come BIOS legacy, con la funzionalità dipendente da UEFI disabilitata. Se fai affidamento sulla disponibilità di una funzionalità dipendente da UEFI, imposta il parametro della modalità di avvio dell'AMI su `uefi`.

------
#### [ AWS CLI ]

**Per impostare la modalità di avvio di un’AMI**

1. Apporta le modifiche adeguate al volume e al sistema operativo dell'istanza per supportare l'avvio tramite la modalità di avvio selezionata. Le modifiche necessarie sono specifiche del sistema operativo. Per ulteriori informazioni, consulta il manuale del sistema operativo in uso.
**avvertimento**  
Se non si esegue questa fase, l'AMI non sarà utilizzabile.

1. Per trovare l'ID del volume dell'istanza, utilizza il comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html). Verrà creato uno snapshot del volume nella fase successiva.

   ```
   aws ec2 describe-instances \
       --instance-ids i-1234567890abcdef0 \
       --query Reservations[].Instances[].BlockDeviceMappings
   ```

   Di seguito è riportato un output di esempio.

   ```
   [
       [
           {
               "DeviceName": "/dev/xvda",
               "Ebs": {
                   "AttachTime": "2024-07-11T01:05:51+00:00",
                   "DeleteOnTermination": true,
                   "Status": "attached",
                   "VolumeId": "vol-1234567890abcdef0"
               }
           }
       ]
   ]
   ```

1. Per creare uno snapshot del volume, utilizza il comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/create-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-snapshot.html). Utilizza l'ID del volume della fase precedente.

   ```
   aws ec2 create-snapshot \
       --volume-id vol-01234567890abcdef \
       --description "my snapshot"
   ```

   Di seguito è riportato un output di esempio.

   ```
   {
       "Description": "my snapshot",
       "Encrypted": false,
       "OwnerId": "123456789012",
       "Progress": "",
       "SnapshotId": "snap-0abcdef1234567890",
       "StartTime": "",
       "State": "pending",
       "VolumeId": "vol-01234567890abcdef",
       "VolumeSize": 30,
       "Tags": []
   }
   ```

1. Attendi che lo stato dello snapshot sia `completed` prima di passare alla fase successiva. Per ottenere lo stato dello snapshot, utilizza il comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-snapshots.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-snapshots.html) con l’ID dello snapshot ottenuto nel passaggio precedente.

   ```
   aws ec2 describe-snapshots \
       --snapshot-ids snap-0abcdef1234567890 \
       --query Snapshots[].State \
       --output text
   ```

   Di seguito è riportato un output di esempio.

   ```
   completed
   ```

1. Per creare una nuova AMI, utilizza il comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html). Utilizza il valore di `SnapshotId` dall’output di **CreateSnapshot**.
   + Per impostare la modalità di avvio su UEFI, aggiungi il parametro `--boot-mode` con valore `uefi`.

     ```
     aws ec2 register-image \
        --description "my image" \
        --name "my-image" \
        --block-device-mappings "DeviceName=/dev/sda1,Ebs={SnapshotId=snap-0abcdef1234567890,DeleteOnTermination=true}" \
        --root-device-name /dev/sda1 \
        --virtualization-type hvm \
        --ena-support \
        --boot-mode uefi
     ```
   + Per impostare la modalità di avvio su `uefi-preferred`, imposta il valore di `--boot-mode` su `uefi-preferred`

     ```
     aws ec2 register-image \
        --description "my description" \
        --name "my-image" \
        --block-device-mappings "DeviceName=/dev/sda1,Ebs={SnapshotId=snap-0abcdef1234567890,DeleteOnTermination=true}" \
        --root-device-name /dev/sda1 \
        --virtualization-type hvm \
        --ena-support \
        --boot-mode uefi-preferred
     ```

1. (Facoltativo) Per verificare che l’AMI appena creata disponga della modalità di avvio specificata, utilizza il comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html).

   ```
   aws ec2 describe-images \
       --image-id ami-1234567890abcdef0 \
       --query Images[].BootMode \
       --output text
   ```

   Di seguito è riportato un output di esempio.

   ```
   uefi
   ```

------
#### [ PowerShell ]

**Per impostare la modalità di avvio di un’AMI**

1. Apporta le modifiche adeguate al volume e al sistema operativo dell'istanza per supportare l'avvio tramite la modalità di avvio selezionata. Le modifiche necessarie sono specifiche del sistema operativo. Per ulteriori informazioni, consulta il manuale del sistema operativo in uso.
**avvertimento**  
Se non si esegue questa fase, l'AMI non sarà utilizzabile.

1. Per trovare l’ID del volume dell’istanza, utilizza il cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html).

   ```
   (Get-EC2Instance `
       -InstanceId i-1234567890abcdef0).Instances.BlockDeviceMappings.Ebs
   ```

   Di seguito è riportato un output di esempio.

   ```
   AssociatedResource  : 
   AttachTime          : 7/11/2024 1:05:51 AM
   DeleteOnTermination : True
   Operator            : 
   Status              : attached
   VolumeId            : vol-01234567890abcdef
   ```

1. Per creare uno snapshot del volume, utilizza il cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Snapshot.html](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Snapshot.html). Utilizza l'ID del volume della fase precedente.

   ```
   New-EC2Snapshot `
       -VolumeId vol-01234567890abcdef `
       -Description "my snapshot"
   ```

   Di seguito è riportato un output di esempio.

   ```
   AvailabilityZone          : 
   Description               : my snapshot
   Encrypted                 : False
   FullSnapshotSizeInBytes   : 0
   KmsKeyId                  : 
   OwnerId                   : 123456789012
   RestoreExpiryTime         : 
   SnapshotId                : snap-0abcdef1234567890
   SseType                   : 
   StartTime                 : 4/25/2025 6:08:59 PM
   State                     : pending
   StateMessage              : 
   VolumeId                  : vol-01234567890abcdef
   VolumeSize                : 30
   ```

1. Attendi che lo stato dello snapshot sia `completed` prima di passare alla fase successiva. Per ottenere lo stato dello snapshot, utilizza il cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Snapshot.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Snapshot.html) con l’ID dello snapshot del passaggio precedente.

   ```
   (Get-EC2Snapshot `
       -SnapshotId snap-0abcdef1234567890).State.Value
   ```

   Di seguito è riportato un output di esempio.

   ```
   completed
   ```

1. Per creare una nuova AMI, utilizza il cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html). Utilizza il valore di `SnapshotId` dall’output di **New-EC2Snapshot**.
   + Per impostare la modalità di avvio su UEFI, aggiungi il parametro `-BootMode` con valore `uefi`.

     ```
     $block = @{SnapshotId=snap-0abcdef1234567890}
     Register-EC2Image ` 
        -Description "my image" `
        -Name "my-image" `
        -BlockDeviceMapping @{DeviceName="/dev/xvda";Ebs=$block} `
        -RootDeviceName /dev/xvda `
        -EnaSupport $true `
        -BootMode uefi
     ```
   + Per impostare la modalità di avvio su `uefi-preferred`, imposta il valore di `-BootMode` su `uefi-preferred`

     ```
     $block = @{SnapshotId=snap-0abcdef1234567890}
     Register-EC2Image ` 
        -Description "my image" `
        -Name "my-image" `
        -BlockDeviceMapping @{DeviceName="/dev/xvda";Ebs=$block} `
        -RootDeviceName /dev/xvda `
        -EnaSupport $true `
        -BootMode uefi-preferred
     ```

1. (Facoltativo) Per verificare che l’AMI appena creata disponga della modalità di avvio specificata, utilizza il cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html).

   ```
   (Get-EC2Image `
       -ImageId ami-1234567890abcdef0).BootMode.Value
   ```

   Di seguito è riportato un output di esempio.

   ```
   uefi
   ```

------

# Variabili UEFI per istanze Amazon EC2
<a name="uefi-variables"></a>

Quando si avvia un'istanza in cui la modalità di avvio è impostata su UEFI, viene creato un archivio chiave-valore per le variabili. L'archivio può essere utilizzato da UEFI e dal sistema operativo dell'istanza per l'archiviazione delle variabili UEFI.

Le variabili UEFI vengono utilizzate dal bootloader e dal sistema operativo per configurare il startup iniziale del sistema. Consentono al sistema operativo di gestire alcune impostazioni del processo di avvio, come l'ordine di avvio, o di gestire le chiavi per UEFI Secure Boot.

**avvertimento**  
Chiunque sia in grado di connettersi all'istanza (e potenzialmente a qualsiasi software in esecuzione sull'istanza) o chiunque disponga delle autorizzazioni per utilizzare l'[GetInstanceUefiData](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceUefiData.html)API sull'istanza può leggere le variabili. Non è necessario archiviare dati sensibili, ad esempio password o informazioni di identificazione personale, nell'archivio variabili UEFI.

**Persistenza delle variabili UEFI**
+ Per le istanze avviate prima del 10 maggio 2022 incluso, le variabili UEFI vengono cancellate al riavvio o all'arresto.
+ Per le istanze avviate dopo l'11 maggio 2022 incluso, le variabili UEFI contrassegnate come non volatili vengono mantenute al riavvio e all'arresto/avvio.
+ Le istanze bare metal non conservano le variabili non volatili UEFI nelle operazioni di interruzione/avvio dell'istanza.

# UEFI Secure Boot per istanze Amazon EC2
<a name="uefi-secure-boot"></a>

UEFI Secure Boot si basa sul processo di avvio sicuro di lunga data di Amazon EC2 e fornisce funzionalità aggiuntive defense-in-depth che aiutano i clienti a proteggere il software dalle minacce che persistono anche dopo i riavvii. Garantisce che l'istanza avvia solo il software firmato con chiavi crittografiche. Le chiavi sono archiviate nel database delle chiavi dell'[archivio delle variabili non volatili UEFI](uefi-variables.md). UEFI Secure Boot impedisce la modifica non autorizzata del flusso di avvio dell'istanza.

**Topics**
+ [

# Come funziona UEFI Secure Boot con le istanze Amazon EC2
](how-uefi-secure-boot-works.md)
+ [

# Requisiti per l’avvio sicuro UEFI su Amazon EC2
](launch-instance-with-uefi-sb.md)
+ [

# Verifica dell'abilitazione di un'istanza Amazon EC2 per UEFI Secure Boot
](verify-uefi-secure-boot.md)
+ [

# Creare un'AMI di Linux con chiavi personalizzate di UEFI Secure Boot
](create-ami-with-uefi-secure-boot.md)
+ [

# Crea il blob binario per UEFI Secure Boot AWS
](aws-binary-blob-creation.md)

# Come funziona UEFI Secure Boot con le istanze Amazon EC2
<a name="how-uefi-secure-boot-works"></a>

UEFI Secure Boot è una caratteristica specificata in UEFI, che fornisce la verifica dello stato della catena di avvio. È progettato per garantire che solo i file binari UEFI verificati crittograficamente vengano eseguiti dopo l'inizializzazione automatica del firmware. Questi file binari includono i driver UEFI e il bootloader principale, oltre a componenti caricati a catena.

UEFI Secure Boot specifica quattro database chiave, utilizzati in una catena di attendibilità. I database sono archiviati nell'archivio delle variabili UEFI.

La catena di attendibilità è la seguente:

**Database delle chiavi della piattaforma (Platform Key, PK)**  
Il database PK è il root di attendibilità. Contiene una singola chiave PK pubblica che viene utilizzata nella catena di attendibilità per l'aggiornamento del database delle chiavi di scambio delle chiavi (Key Exchange Key, KEK).  
Per modificare il database PK, è necessario disporre della chiave PK privata per firmare una richiesta di aggiornamento. Ciò include l'eliminazione del database PK scrivendo una chiave PK vuota.

**Database delle chiavi di scambio delle chiavi (KEK)**  
Il database KEK è un elenco di chiavi KEK pubbliche utilizzate nella catena di attendibilità per l'aggiornamento dei database delle firme (DB) e denylist (dbx).  
Per modificare il database KEK pubblico, è necessario disporre della chiave PK privata per firmare una richiesta di aggiornamento.

**Database firma (DB)**  
Il database DB è un elenco di chiavi pubbliche e hash utilizzati nella catena di attendibilità per convalidare tutti i file binari di avvio UEFI.  
Per modificare il database db, è necessario disporre della chiave PK privata o di chiavi KEK private per firmare una richiesta di aggiornamento.

**Database di denylist firme (dbx)**  
Il database dbx è un elenco di chiavi pubbliche e hash binari che non sono attendibili e vengono utilizzati nella catena di attendibilità come file di revoca.  
Il database dbx ha sempre la precedenza su tutti gli altri database di chiavi.  
Per modificare il database dbx, è necessario disporre della chiave PK privata o di chiavi KEK private per firmare una richiesta di aggiornamento.  
Il forum UEFI mantiene un dbx disponibile pubblicamente per molti file binari e certificati reputati non validi all'indirizzo [https://uefi.org/revocationlistfile](https://uefi.org/revocationlistfile).

**Importante**  
UEFI Secure Boot applica la convalida della firma su qualsiasi file binario UEFI. Per consentire l'esecuzione di un binario UEFI in UEFI Secure Boot, lo devi firmare con una delle chiavi db private descritte sopra.

Per impostazione predefinita, UEFI Secure Boot è disabilitato e il sistema è in modalità `SetupMode`. Quando il sistema è in modalità `SetupMode`, tutte le variabili chiave possono essere aggiornate senza una firma crittografica. Quando il PK è impostato, UEFI Secure Boot viene abilitato e viene chiuso. SetupMode 

# Requisiti per l’avvio sicuro UEFI su Amazon EC2
<a name="launch-instance-with-uefi-sb"></a>

Quando [avvii un’istanza Amazon EC2](LaunchingAndUsingInstances.md) con un’AMI supportata e un tipo di istanza supportato, tale istanza convaliderà automaticamente i binari di avvio UEFI rispetto al suo database UEFI Secure Boot. e non sono necessarie ulteriori configurazioni. Puoi configurare UEFI Secure Boot su un'istanza anche dopo l'avvio.

**Nota**  
UEFI Secure Boot protegge l'istanza e il suo sistema operativo dalle modifiche del flusso di avvio. Se crei una nuova AMI da un'AMI di origine con UEFI Secure Boot abilitato e modifichi certi parametri durante il processo di copia, come cambiare `UefiData` all'interno dell'AMI, puoi disabilitare UEFI Secure Boot.

**Topics**
+ [

## Supportato AMIs
](#uefi-amis)
+ [

## Tipi di istanze supportati
](#uefi-instance)

## Supportato AMIs
<a name="uefi-amis"></a>

**Linux AMIs**  
Per lanciare un'istanza Linux, l'AMI di Linux deve avere UEFI Secure Boot abilitato.

Amazon Linux supporta UEFI Secure Boot a partire dalla AL2023 versione 2023.1. Tuttavia, UEFI Secure Boot non è abilitato per impostazione predefinita. AMIs Per ulteriori informazioni, consulta [UEFI Secure Boot nella Guida](https://docs.aws.amazon.com/linux/al2023/ug/uefi-secure-boot.html) per l'*AL2023 utente*. Le versioni precedenti di Amazon Linux AMIs non sono abilitate per UEFI Secure Boot. Per utilizzare un'AMI supportata, è necessario eseguire una serie di passaggi di configurazione sulla propria AMI Linux. Per ulteriori informazioni, consulta [Creare un'AMI di Linux con chiavi personalizzate di UEFI Secure Boot](create-ami-with-uefi-secure-boot.md).

**Windows AMIs**  
Per lanciare un'istanza Windows, l'AMI di Linux deve avere UEFI Secure Boot abilitato. *Per trovare un'AMI AWS Windows preconfigurata per UEFI Secure Boot con chiavi Microsoft, vedi [Trova Windows Server AMIs configurato con NitroTPM e UEFI Secure Boot](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/ami-windows-tpm.html#ami-windows-tpm-find) nel Windows Reference.AWS AMIs *

Al momento l'importazione di Windows con UEFI Secure Boot tramite il comando [import-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/import-image.html) non è supportata.

## Tipi di istanze supportati
<a name="uefi-instance"></a>

Tutti i tipi di istanze virtualizzate che supportano UEFI supportano anche UEFI Secure Boot. Per i tipi di istanza che supportano UEFI Secure Boot, consulta [Requisiti per la modalità di avvio UEFI](launch-instance-boot-mode.md).

**Nota**  
I tipi di istanza bare metal non supportano UEFI Secure Boot.

# Verifica dell'abilitazione di un'istanza Amazon EC2 per UEFI Secure Boot
<a name="verify-uefi-secure-boot"></a>

Puoi usare le procedure seguenti per determinare se Amazon EC2 è abilitato per UEFI Secure Boot.

## Istanze Linux
<a name="verify-uefi-secure-boot-linux"></a>

Per verificare se un'istanza Linux è abilitata per UEFI Secure Boot, utilizza l'utilità `mokutil`. Installa `mokutil` se non è già presente nell'istanza. Per le istruzioni di installazione per Amazon Linux 2, consulta [Trovare e installare pacchetti software su un'istanza Amazon Linux 2](https://docs.aws.amazon.com/linux/al2/ug/find-install-software.html). Per altre distribuzioni Linux, consulta la relativa documentazione specifica.

**Per verificare se un'istanza Linux è abilitata per UEFI Secure Boot**  
Connettiti alla tua istanza ed esegui il seguente comando come `root` in una finestra del terminale.

```
mokutil --sb-state 
```

Di seguito è riportato un output di esempio.
+ Se UEFI Secure Boot è abilitato, l'output contiene `SecureBoot enabled`.
+ Se UEFI Secure Boot non è abilitato, l'output contiene `SecureBoot disabled` o `Failed to read SecureBoot`.

## Istanze Windows
<a name="verify-uefi-secure-boot-windows"></a>

**Per verificare se un'istanza Windows è abilitata per UEFI Secure Boot**

1. Connettiti alla tua istanza.

1. Apri lo strumento msinfo32.

1. Controlla il campo **Secure Boot State** (Stato Secure Boot). Se UEFI Secure Boot è abilitato, il valore è **Supportato**, come mostrato nell'immagine seguente.  
![\[Stato di avvio sicuro all'interno delle informazioni di sistema.\]](http://docs.aws.amazon.com/it_it/AWSEC2/latest/UserGuide/images/secure-boot-state-win.png)

È inoltre possibile utilizzare il PowerShell cmdlet Windows `Confirm-SecureBootUEFI` per verificare lo stato di Secure Boot. Per ulteriori informazioni sul cmdlet, vedere [Confirm- SecureBoot UEFI nella documentazione](https://learn.microsoft.com/en-us/powershell/module/secureboot/confirm-securebootuefi) Microsoft.

# Creare un'AMI di Linux con chiavi personalizzate di UEFI Secure Boot
<a name="create-ami-with-uefi-secure-boot"></a>

Queste istruzioni mostrano come creare un’AMI di Linux con UEFI Secure Boot e chiavi private personalizzate. Amazon Linux supporta UEFI Secure Boot a partire dalla AL2023 versione 2023.1. Per ulteriori informazioni, consulta [UEFI Secure Boot on AL2023](https://docs.aws.amazon.com/linux/al2023/ug/uefi-secure-boot.html) nella *Amazon Linux 2023 User Guide*.

**Importante**  
La procedura seguente è destinata **esclusivamente agli utenti esperti**. Per utilizzare queste procedure è necessario disporre di una conoscenza sufficiente del flusso di avvio della distribuzione SSL e Linux.

**Prerequisiti**
+ Verranno utilizzati i seguenti strumenti:
  + OpenSSL: [https://www.openssl.org/](https://www.openssl.org/)
  + [efivar — efivar https://github.com/rhboot/](https://github.com/rhboot/efivar)
  + [efitools — https://git.kernel. org/pub/scm/linux/kernel/git/jejb/efitools.git/](https://git.kernel.org/pub/scm/linux/kernel/git/jejb/efitools.git/)
  + Comando [get-instance-uefi-data](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-uefi-data.html)
+ L'istanza Linux deve essere stata avviata con un'AMI Linux che supporta la modalità di avvio UEFI e deve contenere dati non volatili.

Le istanze appena create senza chiavi UEFI Secure Boot vengono create in `SetupMode`, che ti consente di registrare le tue chiavi. Alcuni AMIs sono preconfigurati con UEFI Secure Boot e non è possibile modificare le chiavi esistenti. Se desideri modificare le chiavi, devi creare una nuova AMI basata sull'AMI originale.

Sono disponibili due modi per propagare le chiavi nell'archivio delle variabili, descritti di seguito sotto Opzione A e Opzione B. L'Opzione A descrive come farlo dall'interno dell'istanza, imitando il flusso di hardware reale. L'Opzione B descrive come creare un blob binario, che viene poi passato come file con codifica base64 quando si crea l'AMI. Per entrambe le opzioni, è necessario innanzitutto creare le tre coppie di chiavi, utilizzate per la catena di attendibilità.

**Topics**
+ [

## Attività 1 - Creare coppie di chiavi
](#uefi-secure-boot-create-three-key-pairs)
+ [

## Attività 2 - Opzione A: aggiunta delle chiavi all’archivio delle variabili dall’interno dell’istanza
](#uefi-secure-boot-optionA)
+ [

## Attività 2 - Opzione B: creazione di un blob binario contenente un archivio delle variabili preriempito
](#uefi-secure-boot-optionB)

## Attività 1 - Creare coppie di chiavi
<a name="uefi-secure-boot-create-three-key-pairs"></a>

UEFI Secure Boot si basa sui seguenti tre database di chiavi, utilizzati in una catena di attendibilità: la chiave di piattaforma (PK), la chiave di scambio delle chiavi (KEK) e il database delle firme (DB).¹

Crea ciascuna chiave sull'istanza. Per preparare le chiavi pubbliche in un formato valido per lo standard UEFI Secure Boot, devi creare un certificato per ciascuna chiave. `DER` definisce il formato SSL (codifica binaria di un formato). Devi quindi convertire ogni certificato in un elenco di firme UEFI, che è il formato binario compreso da UEFI Secure Boot. Infine, devi firmare ogni certificato con la chiave pertinente.

**Topics**
+ [

### Preparazione alla creazione delle coppie di chiavi
](#uefisb-prepare-to-create-key-pairs)
+ [

### Coppia di chiavi 1: crea la chiave della piattaforma (PK)
](#uefisb-create-key-pair-1)
+ [

### Coppia di chiavi 2: crea la chiave di scambio chiave (KEK)
](#uefisb-create-key-pair-2)
+ [

### Coppia di chiavi 3: crea il database delle firme (DB)
](#uefisb-create-key-pair-3)
+ [

### Firma l'immagine di avvio (kernel) con la chiave privata.
](#uefi-secure-boot-sign-kernel)

### Preparazione alla creazione delle coppie di chiavi
<a name="uefisb-prepare-to-create-key-pairs"></a>

Prima di creare le coppie di chiavi, crea un identificatore univoco globale (GUID) da utilizzare nella generazione delle chiavi.

1. [Collegati all'istanza.](connect.md)

1. Esegui il comando seguente in un prompt della shell.

   ```
   uuidgen --random > GUID.txt
   ```

### Coppia di chiavi 1: crea la chiave della piattaforma (PK)
<a name="uefisb-create-key-pair-1"></a>

La PK è il root di attendibilità per le istanze UEFI Secure Boot. La PK privata viene utilizzata per aggiornare la KEK, che a sua volta può essere utilizzata per aggiungere chiavi autorizzate al database delle firme (DB).

Lo standard X.509 viene utilizzato per creare la coppia di chiavi. Per informazioni sullo standard, consulta [X.509](https://en.wikipedia.org/wiki/X.509) su *Wikipedia*.

**Per creare la PK**

1. Crea la chiave. Devi assegnare un nome alla variabile `PK`.

   ```
   openssl req -newkey rsa:4096 -nodes -keyout PK.key -new -x509 -sha256 -days 3650 -subj "/CN=Platform key/" -out PK.crt
   ```

   Vengono specificati i seguenti parametri:
   + `-keyout PK.key`: il file della chiave privata.
   + `-days 3650`: il numero di giorni per cui il certificato è valido.
   + `-out PK.crt`: il certificato che viene utilizzato per creare la variabile UEFI.
   + `CN=Platform key`: il nome comune (CN) della chiave. È possibile inserire il nome della propria organizzazione anziché. *Platform key*

1. Crea il certificato.

   ```
   openssl x509 -outform DER -in PK.crt -out PK.cer
   ```

1. Converti il certificato in un elenco di firme UEFI.

   ```
   cert-to-efi-sig-list -g "$(< GUID.txt)" PK.crt PK.esl
   ```

1. Firma l'elenco delle firme UEFI con la PK privata (autofirmata).

   ```
   sign-efi-sig-list -g "$(< GUID.txt)" -k PK.key -c PK.crt PK PK.esl PK.auth
   ```

### Coppia di chiavi 2: crea la chiave di scambio chiave (KEK)
<a name="uefisb-create-key-pair-2"></a>

La KEK privata viene utilizzata per aggiungere chiavi al db, ossia l'elenco delle firme autorizzate da avviare sul sistema. 

**Per creare la KEK**

1. Crea la chiave.

   ```
   openssl req -newkey rsa:4096 -nodes -keyout KEK.key -new -x509 -sha256 -days 3650 -subj "/CN=Key Exchange Key/" -out KEK.crt
   ```

1. Crea il certificato.

   ```
   openssl x509 -outform DER -in KEK.crt -out KEK.cer
   ```

1. Converti il certificato in un elenco di firme UEFI.

   ```
   cert-to-efi-sig-list -g "$(< GUID.txt)" KEK.crt KEK.esl
   ```

1. Firma l'elenco delle firme con la PK privata.

   ```
   sign-efi-sig-list -g "$(< GUID.txt)" -k PK.key -c PK.crt KEK KEK.esl KEK.auth
   ```

### Coppia di chiavi 3: crea il database delle firme (DB)
<a name="uefisb-create-key-pair-3"></a>

L'elenco db contiene chiavi autorizzate per l'avvio sul sistema. Per modificare l'elenco, è necessaria la KEK privata. Le immagini di avvio saranno firmate con la chiave privata creata in questa fase.

**Per creare il db**

1. Crea la chiave.

   ```
   openssl req -newkey rsa:4096 -nodes -keyout db.key -new -x509 -sha256 -days 3650 -subj "/CN=Signature Database key/" -out db.crt
   ```

1. Crea il certificato.

   ```
   openssl x509 -outform DER -in db.crt -out db.cer
   ```

1. Converti il certificato in un elenco di firme UEFI.

   ```
   cert-to-efi-sig-list -g "$(< GUID.txt)" db.crt db.esl
   ```

1. Firma l'elenco delle firme con la KEK privata.

   ```
   sign-efi-sig-list -g "$(< GUID.txt)" -k KEK.key -c KEK.crt db db.esl db.auth
   ```

### Firma l'immagine di avvio (kernel) con la chiave privata.
<a name="uefi-secure-boot-sign-kernel"></a>

Per Ubuntu 22.04, le seguenti immagini richiedono le firme.

```
/boot/efi/EFI/ubuntu/shimx64.efi
/boot/efi/EFI/ubuntu/mmx64.efi
/boot/efi/EFI/ubuntu/grubx64.efi
/boot/vmlinuz
```

**Per firmare un'immagine**  
Utilizza una sintassi come la seguente per firmare un'immagine.

```
sbsign --key db.key --cert db.crt --output /boot/vmlinuz /boot/vmlinuz
```

**Nota**  
Devi firmare tutti i nuovi kernel. Di solito, *`/boot/vmlinuz`* esegue un collegamento simbolico all'ultimo kernel installato.

Per informazioni sulla catena di avvio e sulle immagini richieste, consulta la documentazione per la distribuzione.

¹ Grazie alla ArchWiki community per tutto il lavoro svolto. I comandi per creare il PK, creare il KEK, creare il DB e firmare l'immagine provengono da [Creating keys](https://wiki.archlinux.org/title/Unified_Extensible_Firmware_Interface/Secure_Boot#Creating_keys), scritto dal team and/or di ArchWiki manutenzione che ha contribuito. ArchWiki 

## Attività 2 - Opzione A: aggiunta delle chiavi all’archivio delle variabili dall’interno dell’istanza
<a name="uefi-secure-boot-optionA"></a>

Dopo avere creato le [tre coppie di chiavi](#uefi-secure-boot-create-three-key-pairs), puoi connetterti alla tua istanza e aggiungere le chiavi all'archivio delle variabili dall'interno dell'istanza completando le fasi seguenti. Altrimenti, completa i passaggi indicati in [Attività 2 - Opzione B: creazione di un blob binario contenente un archivio delle variabili preriempito](#uefi-secure-boot-optionB).

**Topics**
+ [

### Fase 1: avvio di un'istanza che supporti UEFI Secure Boot
](#step1-launch-uefi-sb)
+ [

### Fase 2: configurazione di un'istanza per supportare UEFI Secure Boot
](#step2-launch-uefi-sb)
+ [

### Fase 3: creazione di un'AMI dall'istanza
](#step3-launch-uefi-sb)

### Fase 1: avvio di un'istanza che supporti UEFI Secure Boot
<a name="step1-launch-uefi-sb"></a>

Quando [avvii un'istanza](LaunchingAndUsingInstances.md) con i seguenti prerequisiti, l'istanza sarà pronta per essere configurata per supportare UEFI Secure Boot. È possibile abilitare il supporto per UEFI Secure Boot su un'istanza solo al momento dell'avvio; non è possibile abilitarlo in un secondo momento.

**Prerequisiti**
+ **AMI**: l'AMI Linux deve supportare la modalità di avvio UEFI. Per verificare che l'AMI supporti la modalità di avvio UEFI, il parametro della modalità di avvio AMI deve essere **uefi**. Per ulteriori informazioni, consulta [Determinare il parametro della modalità di avvio di un'AMI di Amazon EC2](ami-boot-mode.md).

  Nota che fornisce AWS solo Linux AMIs configurato per supportare UEFI per i tipi di istanze basati su Graviton. AWS attualmente non fornisce Linux x86\$164 che supporti la modalità di avvio UEFI. AMIs Puoi configurare un'AMI personalizzata che supporta la modalità di avvio UEFI per tutte le architetture. Per utilizzare un'AMI personalizzata che supporta la modalità di avvio UEFI, devi eseguire una serie di passaggi di configurazione sulla tua AMI. Per ulteriori informazioni, consulta [Impostare la modalità di avvio di un'AMI Amazon EC2](set-ami-boot-mode.md).
+ **Tipo di istanza**: tutti i tipi di istanze virtualizzate che supportano UEFI supportano anche UEFI Secure Boot. I tipi di istanza bare metal non supportano UEFI Secure Boot. Per i tipi di istanza che supportano UEFI Secure Boot, consulta [Requisiti per la modalità di avvio UEFI](launch-instance-boot-mode.md).
+ Avvia l'istanza dopo il rilascio di UEFI Secure Boot. Solo le istanze avviate dopo il 10 maggio 2022 (quando è stato rilasciato UEFI Secure Boot) possono supportare UEFI Secure Boot.

Dopo avere avviato l'istanza, puoi verificare che sia pronta per essere configurata per supportare UEFI Secure Boot (in altre parole, puoi procedere alla [Fase 2](#step2-launch-uefi-sb)) verificando se i dati UEFI sono presenti. La presenza di dati UEFI indica che i dati non volatili sono persistenti.

**Per verificare se l'istanza è pronta per la fase 2**  
Utilizza il comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-uefi-data.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-uefi-data.html) e specifica l'ID dell'istanza.

```
aws ec2 get-instance-uefi-data --instance-id i-1234567890abcdef0
```

L'istanza è pronta per la fase 2 se i dati UEFI sono presenti nell'output. Se l'output è vuoto, l'istanza non può essere configurata per supportare UEFI Secure Boot. Ciò può verificarsi se l'istanza è stata avviata prima che il supporto UEFI Secure Boot fosse disponibile. Avvia una nuova istanza e riprova.

### Fase 2: configurazione di un'istanza per supportare UEFI Secure Boot
<a name="step2-launch-uefi-sb"></a>

#### Registrazione delle coppie di chiavi nell'archivio delle variabili UEFI dell'utente sull'istanza
<a name="step2a-launch-uefi-sb"></a>

**avvertimento**  
Le immagini di avvio devono essere firmate *dopo* avere registrato le chiavi, altrimenti non potrai avviare l'istanza.

Dopo avere creato gli elenchi di firme UEFI firmati (`PK`, `KEK` e `db`), gli elenchi devono essere iscritti al firmware UEFI.

La scrittura nella variabile `PK` è possibile solo se:
+ Nessuna PK è ancora iscritta, nel qual caso la variabile `SetupMode` ha il valore `1`. Per verificarlo, utilizza il comando seguente. L'output è `1` o `0`.

  ```
  efivar -d -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-SetupMode 
  ```
+ La nuova PK è firmata dalla chiave privata della PK esistente.

**Per registrare le chiavi nell'archivio delle variabili UEFI dell'utente**  
I seguenti comandi devono essere eseguiti sull'istanza.

Se SetupMode è abilitata (il valore è`1`), le chiavi possono essere registrate eseguendo i seguenti comandi sull'istanza:

```
[ec2-user ~]$ efi-updatevar -f db.auth db
```

```
[ec2-user ~]$ efi-updatevar -f KEK.auth KEK
```

```
[ec2-user ~]$ efi-updatevar -f PK.auth PK
```

**Per verificare che UEFI Secure Boot sia abilitato**  
Per verificare che UEFI Secure Boot sia abilitato, attieniti alla procedura descritta in [Verifica dell'abilitazione di un'istanza Amazon EC2 per UEFI Secure Boot](verify-uefi-secure-boot.md).

Ora puoi esportare l'archivio delle variabili UEFI con il comando CLI [https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-uefi-data.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-uefi-data.html) oppure procedere alla fase successiva e firmare le immagini di avvio per riavviare un'istanza abilitata per UEFI Secure Boot.

### Fase 3: creazione di un'AMI dall'istanza
<a name="step3-launch-uefi-sb"></a>

Per creare un'AMI dall'istanza, puoi utilizzare la console o l'`CreateImage`API, la CLI o. SDKs Per le istruzioni relative alla console, consulta la sezione [Creare un'AMI supportata da Amazon EBS](creating-an-ami-ebs.md). Per le istruzioni relative all'API, consulta [CreateImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateImage.html).

**Nota**  
L'API `CreateImage` copia automaticamente l'archivio delle variabili UEFI dell'istanza nell'AMI. La console utilizza l'API `CreateImage`. Dopo avere avviato le istanze utilizzando questa AMI, le istanze avranno lo stesso archivio delle variabili UEFI.

## Attività 2 - Opzione B: creazione di un blob binario contenente un archivio delle variabili preriempito
<a name="uefi-secure-boot-optionB"></a>

Dopo aver creato le [tre coppie di chiavi](#uefi-secure-boot-create-three-key-pairs), puoi creare un blob binario contenente un archivio delle variabili preriempito contenente le chiavi UEFI Secure Boot. Altrimenti, completa i passaggi indicati in [Attività 2 - Opzione A: aggiunta delle chiavi all’archivio delle variabili dall’interno dell’istanza](#uefi-secure-boot-optionA).

**avvertimento**  
Le immagini di avvio devono essere firmate *prima* di registrare le chiavi, altrimenti non potrai avviare l'istanza.

**Topics**
+ [

### Fase 1: creazione di un nuovo archivio delle variabili o aggiornamento di un archivio esistente
](#uefi-secure-boot-create-or-update-variable)
+ [

### Fase 2: caricamento del blob binario al momento della creazione dell'AMI
](#uefi-secure-boot-upload-binary-blob-on-ami-creation)

### Fase 1: creazione di un nuovo archivio delle variabili o aggiornamento di un archivio esistente
<a name="uefi-secure-boot-create-or-update-variable"></a>

Puoi creare l'archivio delle variabili *non in linea* senza un'istanza in esecuzione utilizzando lo strumento python-uefivars. Lo strumento può creare un nuovo archivio delle variabili a partire dalle chiavi. Lo script attualmente supporta il EDK2 formato, il AWS formato e una rappresentazione JSON che è più facile da modificare con strumenti di livello superiore.

**Per creare l'archivio delle variabili non in linea senza un'istanza in esecuzione**

1. Scarica lo strumento al seguente link.

   ```
   https://github.com/awslabs/python-uefivars
   ```

1. Crea un nuovo archivio delle variabili a partire dalle chiavi eseguendo il comando seguente. Questo creerà un blob binario con codifica base64 in .bin. *your\$1binary\$1blob* Lo strumento supporta anche l'aggiornamento di un blob binario tramite il parametro `-I`.

   ```
   ./uefivars.py -i none -o aws -O your_binary_blob.bin -P PK.esl -K KEK.esl --db db.esl --dbx dbx.esl
   ```

### Fase 2: caricamento del blob binario al momento della creazione dell'AMI
<a name="uefi-secure-boot-upload-binary-blob-on-ami-creation"></a>

Utilizza [https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) per passare i dati dell'archivio delle variabili UEFI. Per il parametro `--uefi-data` specifica il blob binario, mentre per il parametro `--boot-mode` specifica `uefi`.

```
aws ec2 register-image \
    --name uefi_sb_tpm_register_image_test \
    --uefi-data $(cat your_binary_blob.bin) \
    --block-device-mappings "DeviceName=/dev/sda1,Ebs= {SnapshotId=snap-0123456789example,DeleteOnTermination=true}" \
    --architecture x86_64 \
    --root-device-name /dev/sda1 \
    --virtualization-type hvm \
    --ena-support \
    --boot-mode uefi
```

# 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
   ```