

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 utenti con 2FA abilitato per gli utenti della Management Utility AWS CloudHSM
<a name="create-2fa"></a>

Usa AWS CloudHSM Management Utility CMU (CMU) e la key pair per creare un nuovo utente di crypto office (CO) con l'autenticazione a due fattori (2FA) abilitata.

**Per creare utenti CO con 2FA abilitata**

1. Su un terminale, esegui le seguenti operazioni:

   1. Accedi al tuo HSM e accedi all'utility CloudHSM Management:

      ```
      /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
      ```

   1. Accedi come CO e utilizza il comando seguente per creare una nuova MFA utente con 2FA:

      ```
      aws-cloudhsm > createUser CO MFA <CO USER PASSWORD> -2fa /home/ec2-user/authdata
      *************************CAUTION********************************
      This is a CRITICAL operation, should be done on all nodes in the
      cluster. AWS does NOT synchronize these changes automatically with the 
      nodes on which this operation is not executed or failed, please 
      ensure this operation is executed on all nodes in the cluster.  
      ****************************************************************
      
      Do you want to continue(y/n)? y
      
      Creating User exampleuser3(CO) on 1 nodesAuthentication data written to: "/home/ec2-user/authdata"Generate Base64-encoded signatures for SHA256 digests in the authentication datafile. 
      To generate the signatures, use the RSA private key, which is the second factor ofauthentication for this user. Paste the signatures and the corresponding public keyinto the authentication data file and provide 
      the file path below.Leave this field blank to use the path initially provided.Enter filename:
      ```

   1. Lascia il terminale di cui sopra in questo stato. Non premere invio né inserire alcun nome di file.

1. In un altro terminale, segui i passi descritti di seguito:

   1. Accedi al tuo HSM e accedi all'utility CloudHSM Management:

      ```
      /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
      ```

   1. Genera una coppia di chiavi pubblica-privata usando i seguenti comandi:

      ```
      openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
      ```

      ```
      openssl rsa -pubout -in private_key.pem -out public_key.pem
      ```

   1. Esegui il comando seguente per installare una funzionalità di interrogazione json per estrarre il Digest dal file authdata:

      ```
      sudo yum install jq
      ```

   1. Per estrarre il valore digest, trova innanzitutto i seguenti dati nel file authdata:

      ```
      {
        "Version":"1.0",
        "PublicKey":"",
        "Data":[
          {
            "HsmId": <"HSM ID">,
            "Digest": <"DIGEST">,
            "Signature": ""
          }
        ]
      }
      ```
**Nota**  
Il digest ottenuto è codificato in base64, tuttavia per firmare il digest è necessario che il file venga prima decodificato e poi firmato. Il comando seguente decodificherà il digest e memorizzerà il contenuto decodificato in 'digest1.bin'  

      ```
      cat authdata | jq '.Data[0].Digest' | cut -c2- | rev | cut -c2- | rev | base64 -d > digest1.bin
      ```

   1. Converti il contenuto della chiave pubblica, aggiungendo "\$1n" e rimuovendo gli spazi come mostrato di seguito:

      ```
      -----BEGIN PUBLIC KEY-----\n<PUBLIC KEY>\n-----END PUBLIC KEY----- 
      ```
**Importante**  
Il comando precedente mostra come "\$1n" viene aggiunto subito dopo **BEGIN PUBLIC KEY-----**, gli spazi tra "\$1n" e il primo carattere della chiave pubblica vengono rimossi, "\$1n" viene aggiunto prima di **-----END PUBLIC KEY** e gli spazi vengono rimossi tra "\$1n" e la fine della chiave pubblica.

      Questo è il formato PEM per la chiave pubblica accettato nel file authdata.

   1. Incolla il contenuto della chiave pubblica in formato pem nella sezione della chiave pubblica del file authdata.

      ```
      vi authdata
      ```

      ```
      {
        "Version":"1.0",
        "PublicKey":"-----BEGIN PUBLIC KEY-----\n<"PUBLIC KEY">\n-----END PUBLIC KEY-----",
        "Data":[    
          {      
            "HsmId":<"HSM ID">,
            "Digest":<"DIGEST">,      
            "Signature": ""   
          }  
        ]
      }
      ```

   1. firma il token del file utilizzando il seguente comando:

      ```
      openssl pkeyutl -sign -in digest1.bin -inkey private_key.pem -pkeyopt digest:sha256 | base64
      Output Expected:
      <"THE SIGNATURE">
      ```
**Nota**  
Come mostrato nel comando precedente, usa **openssl pkeyutl** al posto di **openssl dgst** per la firma.

   1. Aggiungi il digest firmato nel file Authdata nel campo "Firma".

      ```
      vi authdata
      ```

      ```
      {
          "Version": "1.0",
          "PublicKey": "-----BEGIN PUBLIC KEY----- ... -----END PUBLIC KEY-----",
          "Data": [
              {
                  "HsmId": <"HSM ID">,
                  "Digest": <"DIGEST">,
                  "Signature": <"Kkdl ... rkrvJ6Q==">
              },
              {
                  "HsmId": <"HSM ID">,
                  "Digest": <"DIGEST">,
                  "Signature": <"K1hxy ... Q261Q==">
              }
          ]
      }
      ```

1. Torna al primo terminale e premi: **Enter**

   ```
   Generate Base64-encoded signatures for SHA256 digests in the authentication datafile. To generate the signatures, use the RSA private key, 
   which is the second factor ofauthentication for this user. Paste the signatures and the corresponding public keyinto the authentication data file and provide the file path below. Leave this field blank to use the path initially provided. 
   Enter filename: >>>>> Press Enter here
   
   createUser success on server 0(10.0.1.11)
   ```